思路:
先列出每一种情况。
可以发现只有 1 4 5 9 是比较特殊的,其它4种情况都是可以递推出来的,所以我们可以打表,把几种特殊的情况列出来,然后去计算。
如下的模拟过程。
代码:
class Solution {
public:
string intToRoman(int num) {
int Num[]={
1000,
900,500,400,100,
90,50,40,10,
9,5,4,1
};
string prs[]={
"M",
"CM","D","CD","C",
"XC","L","XL","X",
"IX","V","IV","I"
};
string res;
//因为是倒着定义的 所以是正方向去判断
for(int i=0;i<13;i++){
while(num>=Num[i]) {
num-=Num[i];
res+=prs[i];
}
}
return res;
}
};
评论区