程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> topcoder-srm144-div

topcoder-srm144-div

編輯:C++入門知識

[cpp]  #include <string>   #include <vector>   #include <iostream>   using namespace std;         class BinaryCode{       public:           vector<string> decode(string message){                  //prepare the basic return value               vector<string> result;               result.push_back( "NONE" );               result.push_back( "NONE" );                  if( message.empty() )                   return result;                  /* set down the value that can be deducted form 0 or 3 */               string module;               for( int i=0; i<message.length(); ++i)                   module.push_back( 'x' );                  for( int i=0; i<message.length(); ++i ){                   if( message[i] == '0' ){                       module[i] = '0';                       if( i-1 >= 0 )                           module[i-1] = '0';                       if( i+1 < message.length() )                           module[i+1] = '0';                   }                   else if( message[i] == '3' ){                       module[i] = '1';                       if( i-1 >= 0 )                           module[i-1] = '1';                       if( i+1 < message.length() )                           module[i+1] = '1';                                 }               }                  /* set down the value can be deducted from 1 or 2 */               for( int k=0; k<=1; ++k ){                   if( module[0] != '1'- k ){                          string tmp = module;                          /* process the [0] unit */                       tmp[0] = '0'+ k;                          /* process the [1] unit */                       char ch = message[0] - tmp[0] + '0';                       /*事實上ch可能算出2來,如message="22111",tmp[0]='0'*/                       if( ch!='0' && ch!='1' ){                           goto nosolution;                           }                       if( (module[1] != 'x') && (ch!=module[1]) ){                           goto nosolution;                       }                       else{                           tmp[1] = ch;                       }                             /* process [2]..[length-1] units */                       for( int i=2; i<tmp.length(); ++i ){                           ch = message[i-1] - tmp[i-1] - tmp[i-2] + '0' + '0';                           if( ch!='0' && ch!='1' ){                               goto nosolution;                           }                           if( (module[i] != 'x') && (ch != module[i]) ){                               goto nosolution;                                                   }                           else{                               tmp[i] = ch;                           }                       }                                          /*add it to the result*/                       result[k] = tmp;                       nosolution: ;                   }               }               return result;           };       private:    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved