http://acm.hdu.edu.cn/showproblem.php?pid=2352
从字串的最后找起,如果这一个所代表的数字比上一个大,就加上,小的话就减掉。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include<stdio.h> #include<string.h> int main() { int len,i,t,sum[100],a; char s[200]; sum['I']=1; sum['V']=5; sum['X']=10; sum['L']=50; sum['C']=100; sum['D']=500; sum['M']=1000; sum[0]=0; scanf("%d",&t); gets(s); while(t--) { a=0; gets(s); len=strlen(s)-1; for(;len>=0;len--) { if(sum[s[len]]<sum[s[len+1]]) a-=sum[s[len]]; else a+=sum[s[len]]; } printf("%d\n",a); } return 0; }