算法上难度不大,还是找规律;
将个十百千,从1到9的罗马值,存进相应的数组,再根据数值找到对应的罗马值;
以下是程序:
#include <string.h>
char* intToRoman(int num) {
static char* roman_q[3]={"M","MM","MMM"};
static char* roman_b[9]={"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
static char* roman_s[9]={"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
static char* roman_g[9]={"I","II","III","IV","V","VI","VII","VIII","IX"};
char* result=(char*)malloc(sizeof(char)*13);
char* temp=result;
int a=0,b=0,c=0,d=0;
a=num/1000;
b=num%1000/100;
c=num%100/10;
d=num%10;
if(a>0)
{
strcat(temp,roman_q[a-1]);
}
if(b>0)
{
strcat(temp,roman_b[b-1]);
}
if(c>0)
{
strcat(temp,roman_s[c-1]);
}
if(d>0)
{
strcat(temp,roman_g[d-1]);
}
return result;
}
时间:73ms,还需要优化处理;