質問の意味:
数N、出力[1、N]各文字のデジタル変換はローマ数字で表示された後数であるに入ります。
アイデア:
暴力は...手紙を見つけるためにデジタル文字列を列挙し、その後、アラビア数字、ローマ数字に変換するプログラムを書いていました。
遭遇したいかなる簡単なピットは、ローマ数字表現450ではありません!!
ローマ数字とアラビア数字各見込み変化上記被写体leetcodeは、このことによって影響を受けることができる......
これらの場所から学ぶことがある問題を解決するための分析:
* strcatの2つのchar []接続
残りの問題は> <理解するための詳細な解決策ではありません
1 / * 2 ID:ggy_7781 3 TASK:接頭 4 LANG:C ++ 11 5 * / 6 7の#include <ビット/ STDC ++ H> 8 使って 名前空間STDを、 9 10 チャー A [ 200003 ]。 11 チャー STRS [ 203 ] [ 13 ]。 12 チャー TMP [ 79 ]。 13 ブール CMP(対< 整数、整数 > L、対< INT、INT > R) 14 { 15 もし(l.first =!r.first) 16 リターン l.first < r.first。 17 リターン l.second < r.second。 18 } 19 INT メイン(){ 20 freopenは(" prefix.in "、" R " 、STDIN)。 21 freopenは(" prefix.out "、" W " 、STDOUT)。 22 INT TOT = 0 。 23 一方(CIN >> STRS [TOT]) 24 { 25 であれば(STRS [TOT] [ 0 ] == ' ' ) 26 ブレーク。 27 TOT ++ ; 28 } 29 ながら(CIN >> TMP) 30 STRCAT(TMP)。 31 INT LEN = STRLEN()。 32 ベクター<ペア< 整数、整数 >> ANS。 33 のために(INT iが= 0 ; I <TOT; I ++ ) 34 { 35 INTレニ= STRLEN(STRS [I])。 36 のために(INT J = 0 ; J <LEN; J ++ ) 37 { 38 であれば([J] == STRS [I] [ 0 ]) 39 { 40 のint OP = J。 41 ブール OK = 真; 42 INT K。 43 のための(K = 0 ; K <レニ&& J <LEN; K ++、J ++ ) 44 { 45 であれば(STRS [I] [K] =![J]) 46 { 47 OK =偽; 48 ブレーク; 49 } 50 } 51 であれば(OK && K == レニ) 52 { 53 ans.push_back(対< 整数、整数 > (OP、J))。 54 } 55 J = OP。 56 } 57 } 58 } 59 ソート(ans.begin()、ans.end()、CMP)。 60 もし(ANS [ 0 ] 1次回!= 0 ) 61 { 62 COUT << 0 << ENDL。 63 リターン 0 ; 64 } 65 INT nowpos = ANS [ 0 ] .second。 66 int型 J = 0 ; 67 一方(J <ans.size()&& ANS [j]が1次回<= nowpos && nowpos <= ANS [J] .second) 68 { 69 nowpos = ANS [J] .second。 70 J ++ ; 71 } 72 COUT << nowpos << ENDL。 73 リターン 0 。 74 }