题目
待解决
不知道为什么,自己测试,输入的“III”,答案是3,可是评判总是1。。。
不知道为啥???
代码
#include<iostream>
#include<map>
#include<string>
using namespace std;
int romanToInt(string s) {
int num=0,flag=0;//flag标志前面有可能是数字小的
map<char,int> m;
m['I']=1;
m['V']=5;
m['X']=10;
m['L']=50;
m['C']=100;
m['D']=500;
m['M']=1000;
for(int i=1;i<s.length()-1;i++){
switch(s[i]){
case 'I':{
num=num+m['I'];
flag=1;
break;
}
case 'V':{
num=num+m['V'];
if(flag==1){
num=num-2;
flag=0;
}
break;
}
case 'X':{
num=num+m['X'];
if(flag==1){
num=num-2;
flag=0;
}
flag=1;
break;
}
case 'L':{
num=num+m['L'];
if(flag==1){
num=num-20;
flag=0;
}
break;
}
case 'C':{
num=num+m['C'];
if(flag==1){
num=num-20;
flag=0;
}
flag=1;
break;
}
case 'D':{
num=num+m['D'];
if(flag==1){
num=num-200;
flag=0;
}
break;
}
case 'M':{
num=num+m['M'];
if(flag==1){
num=num-200;
flag=0;
}
break;
}
}
}
return num;
}
int main(){
string num;
cin>>num;
cout<<romanToInt(num);
return 0;
}