問題のロスP1008バレーの三連勝単式ソリューション

 

トピックポータル

 

話題の簡単な分析を見つけることができます:

  • 最初の数は123であり、最小
  • 333までの最初の数字は、次に大きい第3の数は4桁です

だから、これを行うことができます:

1  のためのint型 A = 100 ; <= 333 ; ++ ){
 2      B = 2 * 3      、C = 3 * 4     ...
 5 } 

その後、我々は、各番号の各桁を分離することができ、アレイ内のタグと一緒に、出てきました:

1  ながら(!= 0 ){
 2      フラグ[%10 ] = 1 ;
3      / = 10 4 }

 

コード:

1の#include <ビット/ STDC ++ H.>      // ユニバーサルヘッダ
2  使用して 名前空間STD;
 3  BOOLフラグに[ 15 ];          // タグ・アレイ
。4  ボイド F(INT A){       // 空隙型、値が返されない
。5      しばらく(a!= 0){     // 桁の分解
6。          フラグに[%10 ] = 1 ;
 7          A / = 10 ;
 8      }
 。9  
10      / * 
。11      Iは元々書き込まれ、これは、ラインであり、私が個人的に上記のことをお勧めします 
 12 
13である     。フラグ[10%] = 1で、
 14      フラグに[%100%10] = 1;
 15      フラグに[A / 100] = 1;
 16      * / 
17      リターン;
 18である }
 。19  INT メイン(){
 20は     INT 、B、C、
 21は     BOOL X = 0 ;
 22である     ため(A = 123 ; <= 333 ; ++){ // 列挙
23は          X = 0 ;
 24          B = A * 2 ;
 25          C = A * 3。;
 26は         // 別の番号を生成する2つの
27         F(A); F(B)、F(C); // 関数を呼び出す
28  
29          のためにINTは I = 1。 ; I <= 9 ; I ++ ){
 30は、             IF(!フラグに[I]は= 1 ){
 31は、                  Xは= 0 ;
 32                  BREAK ; // ループのうち
33である             }
 34である         }
 35  
36          IF(X)COUT << << A '  ' << << B '  ' << C << ENDL; // 出力
37          のmemset(のフラグ、010); // リセットフラグアレイ10は、()フラグにはsizeofに変更することができる
38である     }
 39      リターン 0 ;
 40 }

また、重複を防ぐために、私は静かに、コードで小さなミスを残し、あなたの友人を見て、直接提出することができます!

PS:あなたがエラーを見つけた場合は、直接コードを奪うことができます

おすすめ

転載: www.cnblogs.com/hjxhjx/p/11440741.html