百度面试题 求比N大的最小“不重复数”
2015-08-25 17:59
369 查看
给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11时相等的两个相邻位,而12301是不重复数。
#include<iostream>
using namespace std;
void Calculate(int a)
{
int pa = a;
int count = 0;
int b[20] = {0};
//将pa按位存储到数组b
while(pa > 0)
{
b[count++] = pa%10;
pa = pa/10;
}
bool flag = true; //是否有重复数
bool carryFlag = false; //是否产生进位
//从高位开始判断是否有重复数
int i,j,k;
count--;
for(i=count;i>0;i--)
{
if(b[i] == b[i-1])
{
flag = false;
b[i-1]++; //有可能产生进位
if(b[i-1]>9)
carryFlag = true;
break;
}
}
if(!flag) //如果存在重复位
{
int c = 0;
//将低位重复数后面的数都变成0101....
for(j = i-1;j>0;j--)
{
b[j-1] = c;
c = (c == 0 ? 1:0);
}
//处理进位
if(carryFlag)
{
int carry = 0;
for(j = i-1;j<=count + 1;j++)
{
b[j] = b[j] + carry;
if(b[j] >= 10)
{
carry = 1;
b[j] = b[j] - 10;
}
}
}
pa = 0;
for(i = (count=1 ? count + 1:count);i >=0;i--)
{
pa = pa *10 + b[i];
}
cout<<"the min no repeat number: "<<pa<<endl;
}
else
{
cout<<"the min no repeat number: "<<a<<endl;
return;
}
}
int main()
{
int N = 100002;
cout<<"N为:"<<N<<endl;
Calculate(N+1);
return 0;
}
运行结果为:
#include<iostream>
using namespace std;
void Calculate(int a)
{
int pa = a;
int count = 0;
int b[20] = {0};
//将pa按位存储到数组b
while(pa > 0)
{
b[count++] = pa%10;
pa = pa/10;
}
bool flag = true; //是否有重复数
bool carryFlag = false; //是否产生进位
//从高位开始判断是否有重复数
int i,j,k;
count--;
for(i=count;i>0;i--)
{
if(b[i] == b[i-1])
{
flag = false;
b[i-1]++; //有可能产生进位
if(b[i-1]>9)
carryFlag = true;
break;
}
}
if(!flag) //如果存在重复位
{
int c = 0;
//将低位重复数后面的数都变成0101....
for(j = i-1;j>0;j--)
{
b[j-1] = c;
c = (c == 0 ? 1:0);
}
//处理进位
if(carryFlag)
{
int carry = 0;
for(j = i-1;j<=count + 1;j++)
{
b[j] = b[j] + carry;
if(b[j] >= 10)
{
carry = 1;
b[j] = b[j] - 10;
}
}
}
pa = 0;
for(i = (count=1 ? count + 1:count);i >=0;i--)
{
pa = pa *10 + b[i];
}
cout<<"the min no repeat number: "<<pa<<endl;
}
else
{
cout<<"the min no repeat number: "<<a<<endl;
return;
}
}
int main()
{
int N = 100002;
cout<<"N为:"<<N<<endl;
Calculate(N+1);
return 0;
}
运行结果为:
相关文章推荐
- 剑指offer面试题28-字符串的排列
- 剑指offer面试题27-二叉搜索树转双向链表
- 程序员的年龄天花板
- 黑马程序员—————Java基础--------异常
- 黑马程序员 -学习笔记-垃圾回收
- java字节中的基本类型的职业的数目 (采访总是问)
- 机器学习算法面试—口述(4):决策树
- 黑马程序员--OC学习篇之Foundation框架中的NSArray对象和NSMutableArray对象
- 程序员笔试面试要点
- 让程序员跳槽的非钱原因
- 黑马程序员——Java基础---String类和对象包装类
- 黑马程序员——28,反射
- 程序员的年龄天花板
- 【黑马程序员】Block
- 黑马程序员—IOS基础视频—多态点语法类对象
- 黑马程序员—IOS加强视频—foundation框架
- 百度面试题 运用递归求最大重复数
- 【iOS学习笔记】面试题归总
- 作为码农,我们为什么要写作
- 机器学习算法面试—口述(3):贝叶斯分类器