/*
问题描述:查找最大的不重复数
如果一个数字十进制表达时,不存在连续两位相同,则称之为"不重复数"。
例如, 105 、 1234 和 12121 都是"不重复数",而 11 、 100 和 1225 不是。
给定一个正整数 A ,返回大于 A 的最小"不重复数"。A 小于 100000
要求实现函数
unsigned int GetNotRepeatNum(unsigned int iValue)
【输入】 lValue : 给定的数字,返回大于该值的最小不重复数
【输出】 无
【返回】大于 iValue 的最小不重复数
示例
输入: iValue =54
返回: 56
输入: iValue =10
返回: 12
输入: iValue =98
返回: 101
输入: iValue =21099
返回: 21201
作者:gylltq
日期:2014-4-21
*/
#include <stdio.h>
#include <stdlib.h>
//#include <math.h>
bool compare(unsigned int input)
{
bool flag = true;
unsigned int BitNum[6];
int i = 0;
int m,n;
do{
BitNum[i] = input%10;
i++;
}while(input/=10);
for(m = 0;m < i;m++)
for(n = 1;n < i;n++)
if(BitNum[n] == BitNum[n-1])
flag = false;
return flag;
}
unsigned int GetNotRepeatNum(unsigned int iValue)
{
unsigned int temp = iValue + 1;
if(iValue > 100000)
return 0;
temp = iValue + 1;
while(!compare(temp)){
temp++;
}
return temp;
}
int main()
{
unsigned int a = 21099;
unsigned int ret;
ret = GetNotRepeatNum(a);
printf("%u\n",ret);
return 0;
}
华为编程大赛-查找最大的不重复数
最新推荐文章于 2022-11-28 15:26:29 发布