基于上面一篇博文的代码设计求的某个数的回文距离,所谓回文距离就是给定一个数,求这个数离与他最近的那个回文数的距离,例如123的回文距离为2,因为离123最近的回文数为121,所以123的回文距离为2,代码如下:
#include <iostream>
#include <strstream>
#include <math.h>
using namespace std;
bool fun(int);
void main()
{
int val,val1,val2,result,flag;
do{
cout<<"please enter val: ";
cin>>val;
val1=val;val2=val;
while(!fun(val1))
{
val1++;
}
while((!fun(val2)) && (val2>0))
{
val2--;
}
result=((val-val2)<(val1-val))?(val-val2):(val1-val);
cout<<"the result is: "<<result<<endl;
cout<<"do you want to continue: 1(yes);0(no)";
cin>>flag;
}while(flag);
}
bool fun(int x)
{
int num=0;
int val_old1=x; //保存x的一个副本
int val_old2=x; //保存x的一个副本
for(;x!=0;x=x/10) //计算x是几位数
{
num++;
}
int *element=new int[num]; //用来存放x各位上的数值
for(int i=0;i<num;i++)
{
element[i]=val_old1-val_old1/10*10;
val_old1=val_old1/10;
}
int val_new=0;
for(int i=0;i<num;i++)
{
val_new+=element[i]*pow(10.0,num-1-i);
}
if(val_new==val_old2)
{
return true;
}
else
{
return false;
}
}上面的代码便可求得某个数的回文距离。

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



