百度笔试题:找最小的不重复数
2013-12-05 10:42
246 查看
版权所有。所有权利保留。
欢迎转载,转载时请注明出处:
/article/1614859.html
给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。
思路很简单:
1、把原数加1。
2、从高位开始找重复位。
3、将这位加1。
4、如果是10,此位变0,指针指向高位,转3。如果不是10,转5。
5、这位是否与高位相同,相同的话,转3。不同则转6。
6、把这位以后刷成01串。
其实本质就是贪心,把最高的重复位变掉,之后刷成01串,但变后可能又重复了,那么再变。
自己试试即可。
代码如下:
输入样例:
121
19898989
989898989
989898
1989898
2199
120
0
2
21
20
输出样例:
123
20101010
1010101010
1010101
2010101
2301
121
1
3
23
21
欢迎转载,转载时请注明出处:
/article/1614859.html
给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。
思路很简单:
1、把原数加1。
2、从高位开始找重复位。
3、将这位加1。
4、如果是10,此位变0,指针指向高位,转3。如果不是10,转5。
5、这位是否与高位相同,相同的话,转3。不同则转6。
6、把这位以后刷成01串。
其实本质就是贪心,把最高的重复位变掉,之后刷成01串,但变后可能又重复了,那么再变。
自己试试即可。
代码如下:
#include <iostream> #include <cstring> using namespace std; #define MAX 100 int n[MAX],len; void convert(string str) { memset(n,0,sizeof(n)); for (int i=0;i<str.length();i++) n[str.length()-1-i]=str[i]-'0'; len=str.length(); } void find() { int i; n[0]++; for (i=0;n[i]==10;i++) { n[i]=0; n[i+1]++; } if (i==len) len++; bool yes=true; for (i=len-1;i>=1;i--) if (n[i]==n[i-1]) { yes=false;break; } if (yes) return; n[--i]++; while (true) { while (n[i]==10) { n[i]=0; n[++i]++; } if (i==len) len++; if (n[i]==n[i+1]) n[i]++; else break; } if (i==0) return; n[--i]=0; for (i--;i>=0;i--) n[i]=1-n[i+1]; } int main() { string str; while (cin>>str) { convert(str); find(); for (int i=len-1;i>=0;i--) cout<<n[i]; cout<<endl; } return 0; }
输入样例:
121
19898989
989898989
989898
1989898
2199
120
0
2
21
20
输出样例:
123
20101010
1010101010
1010101
2010101
2301
121
1
3
23
21
相关文章推荐
- 百度笔试题:找最小的不重复数
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 百度笔试:求大于n的最小的不重复数,不重复数是指相邻两个数不相同
- 百度14年笔试 - 找出大于某值的最小的不重复数
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”[2014百度笔试题]
- 百度笔试题----最小不重复数
- 实现返回大于A的最小“不重复数” 百度2014校招笔试题
- 给出任意一个正整数,算出大于它的最小不重复数——最高效[2014百度笔试题]
- 【百度2012年10月20日笔试】2.求字符串中连续重复字母的最大重复次数, 如: aabbbbcadd 的最大字母重复次数为 4, 有四个连续的b. 要求用递归实现.
- 2014百度面试题目---“求比指定整数大且最小的不重复数”解答
- [经典面试题][百度]求比指定数大且最小的“不重复数”
- 最小不重复数(百度笔试题)
- 2014百度研发真题及其解析-求比指定数大且最小的“不重复数”
- (百度笔试题)给定任意一个正整数,求比这个数大且最小的“不重复数”。
- 求最小不重复数,源于百度2014届校园招聘软件研发岗位深圳站
- 百度面试题 求比N大的最小“不重复数”
- 【有趣的面试算法题】之四 求最小不重复数,源于百度2014届校园招聘软件研发岗位深圳站
- 百度一道笔试题(求n个整数连成一排组成的最小整数)
- 百度2014校招-深圳-开发测试-求最小“不重复数”