查找最大的不重复数,查找大于给定数字的最小不重复数

参考博文:http://blog.csdn.net/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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值