代码思想
着眼局部最优解,想办法一步步利用到罗马数字对应的特殊数字,最后得到结果。
代码
public string IntToRoman(int num)
{
int[] values = new int[13] { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
string[] symbols = new string[13] { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
StringBuilder sb = new StringBuilder();
int i = 0;
while (i < 13)
{
if(num>=values[i])//假如大于等于特殊数字
{
sb.Append(symbols[i]);//添加特殊数字
num-=values[i];
}
else
{
i++;
}
}
return sb.ToString();
}