我需要一些關於算法的幫助,我附加了一個問題,它說我必須爲可以將羅馬轉換爲十進制的程序開發算法。一個程序的算法,可以將羅馬轉換爲十進制
我不知道該怎麼做,寧願一個完整的算法,但任何幫助表示讚賞。 這是一個算法而不是程序!
我需要一些關於算法的幫助,我附加了一個問題,它說我必須爲可以將羅馬轉換爲十進制的程序開發算法。一個程序的算法,可以將羅馬轉換爲十進制
我不知道該怎麼做,寧願一個完整的算法,但任何幫助表示讚賞。 這是一個算法而不是程序!
的想法是遍歷從端羅馬數字串開始。對於每個字符,將相應的編號添加到結果中。對於一些特殊的 例如'I','X','C',檢查結果是否大於相應的數字。如果是,我們需要從結果中減去 。如果不是,我們需要將該數字添加到結果中。
res = 0
for each character c backwards:
if c =='I'
res += res + (res >= 5 ? -1 : 1)
else if c=='V'
res += res + 5
else if c=='X'
res += 10 * (res >= 50 ? -1 : 1)
else if c=='L'
res += 50;
else if c == 'C'
res += 100 * (res >= 500 ? -1 : 1)
else if c== 'D'
res += 500
else if c=='M'
res += 1000
return res
例如:MMDCCCXCIX
= 0 + MMDCCCXCIX
= 10 + MMDCCCXCI
= 9 + MMDCCCXC(如10> 5)
= 109 + MMDCCCX
= 99 + MMDCCC(如109> 50)
= 199 + MMDCC
= 299 + MMDC
= 399 + MMD
= 899 + MM
= 1899 + M
= 2899
謝謝。但請告訴我變量的縮寫。 –
Like whats「res」etc .. –
@HaXnainNoOrani res是結果,c是我們迭代的羅馬數字的當前字符。 – errorist
它將幫助,如果你說哪種編程語言你應該這樣做 – whitebrow
它在C但它的算法 –