本文共 1480 字,大约阅读时间需要 4 分钟。
题解:
首先map映射
然后从右往左依次走
其实题目很多都是废话,只要当前位数的权值比右边都大或者等于就是加,否则就是减。
/**@Author: STZG*@Language: C++*/#include#include #include #include #include #include #include #include #include #include #include #include #include #include #include
C++版本二
#include#include #include using namespace std;int main(){ freopen("data2.in", "r", stdin); freopen("data2.out", "w", stdout); int v[500]; v['I'] = 1; v['V'] = 5; v['X'] = 10; v['L'] = 50; v['C'] = 100; v['D'] = 500; v['M'] = 1000; char s[100]; bool flag = true; int tmp = 0; while(scanf("%s", s) == 1) { tmp++; int len = strlen(s); int ans = v[s[len-1]]; for(int i=len-2; i>=0; --i) { if(v[s[i]] >= v[s[i+1]]) ans += v[s[i]]; else ans -= v[s[i]]; } printf("%d\n", ans); } return 0;}
转载地址:http://ayzof.baihongyu.com/