PAT_A1038#が最小の番号を復元します

ソース:

PAT A1038は、最小数(30分)を回収します

説明:

数セグメントの集合を考えると、あなたは彼らから最小の数を回復することになっています。例えば、{32、321、3214、0229、87}が与えられると、我々はそのような組み合わせの異なる順序に対して32-321-3214-0229-87又は0229-32-87-321-3214ような多くの数を回復することができこれらのセグメント、および最小数は0229-321-3214-32-87あります。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各ケースは、正の整数与える  N(続く≤)  Nnumberセグメント。各セグメントは、せいぜい8桁の負でない整数を含んでいます。行のすべての数字は、スペースで区切られます。

出力仕様:

各テストケースのために、1つのラインの最小数を印刷します。最初の桁がゼロであってはならないことに注意してください。

サンプル入力:

5 32 321 3214 0229 87

サンプル出力:

22932132143287

キー:

  • 貪欲

コード:

1  / * 
2  データ:2019年7月23日夜06時47分04秒
 。3  問題:PAT_A1038位が回復最小数
 4。 AC:16時22分
 。5  
。6  タイトル効果:
 7  いくつかの数字に、最小数の必要な呪文
 8  * / 
9の#include <cstdioを>
 10の#include < 文字列 >
 。11の#include <iostreamの>
 12であるの#include <アルゴリズム>
 13で 使用し た名前空間STD;
 14  のconst  int型 M + 1E4 = 10 ;
 15  ストリングS [M];
 16  
。17  BOOL CMP(文字列 A、文字列B)
 18  {
 19      リターン A + B <B + 20  }
 21  
22  のint main()の
 23  {
 24  の#ifdef ONLINE_JUDGE
 25  の#else 
26      freopenは(" Test.txtを"" R " 、STDIN)。
27  #endifの
28  
29      INT N。
30      のscanf(" %d個"、&N)
31      のためにint型 I = 0 ; iがN <; I ++は32の          CIN >> S [i]は、
33      ソート(S、S + N、CMP)。
34      ストリング ANS = "" ;
35      のためには、int型、I = 0 ; iがN <; I ++ 36          ANS + = S [i]は、
37      一方(ans.size()> 1つの && ANS [ 0 ] == ' 0 ' 38          ans.erase(01 )。
39      coutの<< ANS;
40  
41      戻り 0 ;
42 }

 

おすすめ

転載: www.cnblogs.com/blue-lin/p/11233819.html