百度笔试:求大于n的最小的不重复数,不重复数是指相邻两个数不相同
2013-09-28 22:27
260 查看
#include <iostream> using namespace std; int next_norepeat(int n) { int pow, i, j; i=++n; pow=0; while(i) { pow++; i/=10; } int *a = new int[pow+1]; a[0] = 0; for(i=pow, j=n; i>0; i--, j/=10) a[i] = j%10; bool flag = false; for(i=1; i<pow; i++) { if(a[i]==a[i+1]) { a[i+1]++; if(a[i+1]==10) { a[i+1] = 0; a[i]++; if(a[i]==10) { a[i] = 0; a[i+1] = 1; a[i-1]++; } } //i=0; flag = true; break; } } if(flag) { for(j=i+2, i=a[i+1]==0?1:0; j<=pow; j++, i=(i+1)&1) a[j] = i; int next = 0; for(i=pow, j=1; i>0; i--, j*=10) next += a[i]*j; if(a[0]==1) next += j; return next; } else return n; } int main() { int next, n; while(n!=0) { cin>>n; next = next_norepeat(n); cout<<next<<endl; } return 0; }
相关文章推荐
- 实现返回大于A的最小“不重复数” 百度2014校招笔试题
- 给出任意一个正整数,算出大于它的最小不重复数——最高效[2014百度笔试题]
- 百度14年笔试 - 找出大于某值的最小的不重复数
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”[2014百度笔试题]
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 算出大于一串数字的最小值,要求此数值的相邻两位不能相同
- 百度笔试题----最小不重复数
- 百度笔试题:找最小的不重复数
- 百度笔试题:找最小的不重复数
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 查找大于一正整数的最小的不重复数
- 【有趣的面试算法题】之四 求最小不重复数,源于百度2014届校园招聘软件研发岗位深圳站
- 最小不重复数(百度笔试题)
- 再谈大于指定正整数的最小“不重复数”问题
- 【百度2012年10月20日笔试】2.求字符串中连续重复字母的最大重复次数, 如: aabbbbcadd 的最大字母重复次数为 4, 有四个连续的b. 要求用递归实现.
- [2013百度软件研发笔试题] 求字符串中连续出现相同字符的最大值
- (百度笔试题)给定任意一个正整数,求比这个数大且最小的“不重复数”。
- 2013百度笔试 求字符串中连续出现相同字符的最大值
- 求最小不重复数,源于百度2014届校园招聘软件研发岗位深圳站
- 有道难题2009复赛题解答(Java版):求大于给定数的最小不重复数