华为编程大赛-查找最大的不重复数

来源:互联网 发布:最游记一键淘宝端 编辑:程序博客网 时间:2024/04/30 15:23
/*问题描述:查找最大的不重复数如果一个数字十进制表达时,不存在连续两位相同,则称之为"不重复数"。例如, 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;}

0 0