ソース:
説明:
数セグメントの集合を考えると、あなたは彼らから最小の数を回復することになっています。例えば、{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(0、1 )。 39 coutの<< ANS; 40 41 戻り 0 ; 42 }