参考博文:http://blog.youkuaiyun.com/wangshihui512/article/details/8810971#comments
//查找最大的不重复数
//查找大于给定数字的最小不重复数
#include<iostream>
#include<cstdlib>
using namespace std;
bool compare(int result)
{
int temp_result=result;
bool flag=true;//判断结束标志位
int a[5],i=0;
do
{
a[i]=temp_result%10; //取余,取各位数字
i++;
}while(temp_result=temp_result/10);//取商,逐级去掉一位
for(int j=0;j<i;j++)
if(a[j]==a[j+1])
{
flag=false;
break;
}
return flag;
}
int getNotRepeatNum(int iValue)
{
if(iValue>=100000 || iValue<0)//数字不合法时,返回0
return 0;
else if(iValue<10)//数字是一位数时,返回它本身
return iValue;
else if(iValue>=10 && iValue<=99999)//数字在合理范围内时,求解
{
int result=iValue+1;
while(compare(result)==false)//调用函数,判断是否应该继续加1
result++;
return result;
}
}
int main(void)
{
int num=0;
cout<<"输入0表示退出!"<<endl;
cout<<"输入的正整数不能超过100000!"<<endl;
cout<<"请输入给定的正整数:"<<endl;
cout<<"iValue=";
cin>>num;
while(num)//输入0的时候退出查找
{
int temp=getNotRepeatNum(num);
cout<<"result="<<temp<<endl<<endl;
cout<<"iValue=";
cin>>num;
}
system("pause");
return 0;
}