-【一起玩算法】罗马数字转阿拉伯数字

AID:
CID:
视频图片:
作者头像:
弹幕地址:
视频描述:

热门回复:

  • 哲学大叔:那,反过来,阿拉伯数字转罗马数字有什么思路呢?
  • 致远可期:我是来学完看英语文章的
  • hdidbqwiydbi:阿婆主您好。您在递归调用时没考虑边界。如果mi为第一个或最后一个,您的代码会报错。[tv_晕]
  • 陷入幻觉:所有罗马数字的表示为多个两个或一个罗马字符的组成,把这它们的对应关系根据一个还是两个存到两个不同的表里,然后先取需要转换的罗马数字前两个字符,是不是在两个字符的表里。不是就改为止取一个,是的就加到总数里。
  • Monad42:UP主,罗马数字的写法不能这么随意啊! 小数字后面随便跟一个大数字并不都有意义。比如IL就是没有意义的,正确的写法是XLIX。再比如1999应该写作MCMXCIX,而不是IM。 能应用这个法则的必须是相隔1个以内的数字,比如:I和V,I和X,X和L,X和C,C和D,C和M。以上列出的是全部使用该法则的数字对,其余诸如上面的IL和IM都是不存在的。 真正的罗马数字规则可以用穷举法分析: 1.相同的至多三个数字:累加; 2.前大后小:相加; 3.IV=4,IX=9,XL=40,XC=90,CD=400,CM=900; 4.从高数位向低数位逐步表示,整个大数可被分割成表示各个数位的数。 除此三条以外的数字,都不是合法的罗马数字表达,如XXXX违反法则1;XD违反法则3;IXV违反法则4,因为14=10+4,应该表示为X和IV的和;另一例是CMXCIX(999)=CM(900)+XC(90)+IX(9),而非更简单的IM(1000-1)。

http://acg.ibilibili.com/cms/yirenzhixia/7.html