#include<iostream>
#include<string>
#include<map>
using namespace std; //小的在前面,大的在后面,且只差“2”,那么后面大的减去前面小的
int main(){
string s;
int t;
map<char, int> mp;
mp.insert(make_pair('I',1 ));
mp.insert(make_pair('V',5 ));
mp.insert(make_pair('X',10 ));
mp.insert(make_pair('L',50));
mp.insert(make_pair('C',100 ));
mp.insert(make_pair('D',500 ));
mp.insert(make_pair('M',1000));
cin >> t;
cin.ignore(1, '\n');
while (t--){
cin >> s;
int sum = 0;
for (int n = 0; n < s.size(); n++)
if (mp[s[n + 1]] / mp[s[n]] == 2 || mp[s[n + 1]] / mp[s[n]] == 10 ||
mp[s[n + 1]] / mp[s[n]] == 5 )
sum -= mp[s[n]];
else
sum += mp[s[n]];
cout << sum << endl;
}
}
map能通过第一个元素访问第二个元素
本文介绍了一个使用 C++ 编写的简单程序,该程序能够将罗马数字转换为阿拉伯数字。通过对罗马数字规则的理解,利用 map 容器来映射字符与数值的关系,并实现了特殊的前后字符值相减的功能。
993

被折叠的 条评论
为什么被折叠?



