当前位置:首页 » 多媒体相关

一个简单的算法(急急急)


各位大虾,在下一个基础的问题请教各位:  
   
   
  题目:设计一个程序,实现判别一个0,1构成的字串,被3整除后的余数。  
   
  算法:设:s0为所有余0的字串的集合,s1为所有余1的字串的集合,s2为所有余2的字串的集合。起始设置x=0   ,当x后再输入0时,该数仍属于s0;当x后再输入1时,该数属于s1。当x属于s1时,x后再输入0时,该数属于s2;x后再输入1时,该数属于s0。当x属于s2时,x后再输入0时,该数属于s1;x后再输入1时,该数属于s2。  
   
  将算法化为表格(2×3的矩阵):行表示s0,s1,s2     列表示输入的数0,1     行列的交叉为该数属于的集合s0,s1,s2,表示余0,1,2  
   
  0 1  
  s0 s0 s1  
  s1 s2 s0  
  s2 s1 s2  
   
   
   
   
 

推荐阅读

  • 各地环保局网遭克隆 律师呼吁立法 [详细内容]
  • 媒体、社区、Blog(一)话说从头 [详细内容]
  • 播放rm视频的一点补充 [详细内容]
  • 新网域名又添新兵 国内首推中英文.TW [详细内容]
  • 网络电台:声音blog能否化叛逆为利器 [详细内容]
  • 手机蓝牙遥控软件CtrlFreak使用窍门 [详细内容]
  • 国际互联网条约明起生效 维护网络作品版权 [详细内容]
  • 网友回答:
    网友:wendydd

    哈哈   :)  
      有空写一个看看:  
       
      #include   <iostream>  
      #include   <string>  
       
      using   namespace   std;  
       
      /////////////////////////////  
      //   class   decaration  
      /////////////////////////////  
      class   statemachine  
      {  
      public:  
        virtual   statemachine*   change(char   ch)   =   0;  
        virtual   int   result()   =   0;  
         
        static   int   parse(string   bin);  
      };  
       
      class   machines0   :   public   statemachine  
      {  
      public:  
      statemachine*   change(char   ch);  
      int   result()   {   return   0;   }  
      };  
       
      class   machines1   :   public   statemachine  
      {  
      public:  
      statemachine*   change(char   ch);  
      int   result()   {   return   1;   }  
      };  
       
      class   machines2   :   public   statemachine  
      {  
      public:  
      statemachine*   change(char   ch);  
      int   result()   {   return   2;   }  
      };  
       
      class   machineerror   :   public   statemachine  
      {  
      public:  
      statemachine*   change(char   ch);  
      int   result()   {   return   -1;   }  
      };  
       
      /////////////////////////////  
      //   class   definition  
      /////////////////////////////  
      int  
      statemachine::parse(string   bin)  
      {  
      statemachine   *sm   =   new   machines0();  
       
      for   (int   i   =   0;   i   <   bin.length();   ++i)   {  
      statemachine   *tmp   =   sm->change(bin[i]);  
       
          delete   sm;  
              sm   =   tmp;  
               
        if   (   -1   ==   sm->result())  
        return   -1;  
      }  
       
        int   result   =   sm->   result();  
        delete   sm;  
         
        return   result;  
      }  
       
      statemachine*  
      machines0::change(char   ch)  
      {  
      switch   (ch)   {  
        case   0:   return   new   machines0();  
        case   1:   return   new   machines1();  
        default   :   return   new   machineerror();  
      }  
      }  
       
      statemachine*  
      machines1::change(char   ch)  
      {  
      switch   (ch)   {  
        case   0:   return   new   machines2();  
        case   1:   return   new   machines0();  
        default   :   return   new   machineerror();  
      }  
      }  
       
      statemachine*  
      machines2::change(char   ch)  
      {  
      switch   (ch)   {  
        case   0:   return   new   machines1();  
        case   1:   return   new   machines2();  
        default   :   return   new   machineerror();  
      }  
      }  
       
      statemachine*  
      machineerror::change(char   ch)  
      {  
      return   new   machineerror();  
      }  
       
      /////////////////////////////  
      //   test  
      /////////////////////////////  
      int   main(int   argc,   char**   argv)  
      {  
      cout   <<   statemachine::parse("0")   <<   endl;  
      cout   <<   statemachine::parse("1")   <<   endl;  
      cout   <<   statemachine::parse("10")   <<   endl;  
      cout   <<   statemachine::parse("01")   <<   endl;  
      cout   <<   statemachine::parse("110")   <<   endl;  
      cout   <<   statemachine::parse("101")   <<   endl;  
      cout   <<   statemachine::parse("111")   <<   endl;  
      cout   <<   statemachine::parse("1011010010100101")   <<   endl;  
      cout   <<   statemachine::parse("2110")   <<   endl;  
      cout   <<   statemachine::parse("a110")   <<   endl;  
       
      system("pause");  
      return   0;  
      }

    .

    讨论区

    Login