可以将Roman转换为Decimal的程序算法

时间:2016-09-18 15:44:17

标签: algorithm

我需要一些关于算法的帮助,我在其中附加了一个问题,即我必须为可以将Roman转换为Decimal的程序开发算法。

我不知道该怎么做,更喜欢完整的算法,但任何帮助都表示赞赏。 这是一个算法而不是程序!

enter image description here

1 个答案:

答案 0 :(得分:2)

这个想法是从头到尾遍历罗马数字字符串。对于每个字符,将相应的数字添加到结果中。对于一些特殊的 例如'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