查找大于一正整数的最小的不重复数

http://blog.csdn.net/wangshihui512/article/details/8810971

/*
查找最大的不重复数
l 问题描述
如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。
例如, 105 、 1234 和 12121 都是“不重复数”,而 11 、 100 和
1225 不是。给定一个正整数 A ,返回大于 A 的最小“不重复数”。
A 小于 100000
l 要求实现函数
unsigned int GetNotRepeatNum(unsigned int lValue)
【输入】 lValue : 给定的数字,返回大于该值的最小不重复数
【输出】 无
【返回】大于 iValue 的最小不重复数
l 示例
输入: iValue =54
返回: 56
输入: iValue =10
返回: 12
输入: iValue =98
返回: 101
输入: iValue =21099
返回: 21201
*/
#include<iostream>
using namespace std;
bool compare(int m)
{
    int flag=1,i=0;
    unsigned  int a[5]={0};
    do
    {
        a[i]=m%10;
        i++;
    }while(m/=10);//while(m/10);经典错误

    for(int j=0;j<i;j++)
        for(int k=1;k<i;k++)
            if(a[k]==a[k-1])
            flag=0;
    return flag;
}
unsigned int GetNotRepeatNum(unsigned int lValue)
{

    if(lValue>100000)return 0;
    unsigned  int i=lValue+1;

    while(compare(i)==0)
        i++;
    return i;
}
int main()
{
    int a;
    cin>>a;
    while(a)
    {
        cout<<"GetNotRepeatNum="<<GetNotRepeatNum(a)<<endl;
        cin>>a;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值