您的位置:首页 > 其它

最小不重复数(百度笔试题)

2013-10-02 16:05 225 查看


n为正整数,求比这个数大且最小的不重复数,重复数为相邻两位数字相同,如1101为重复数,1231为不重复数。

#include <stdio.h>
#include <string.h>
void find(char s[])
{
int length = strlen(s);
for(int i=0;i<length;i++)
{
if(s[i]==s[i+1] && s[i]=='9')
{
if(i==0)
{
for(int j=length+1;j>0;j--)
s[j]=s[j-1];
s[0]='0';
i=1;
}
s[i-1]+=1;
s[i]='0';
s[i+1]='0';
find(s);
return ;
}
else if(s[i]==s[i+1])
{
s[i+1]+=1;
for(int j=i+2;j<length;j++)
{
if((j-i)%2==0)
s[j]='0';
else
s[j]='1';
}
return ;
}
}
if(s[length-1]=='9')
{
s[length-2]+=1;
s[length-1]='0';
}
else
s[length-1]+=1;
if(s[length-1]==s[length-2] || s[length-2]==s[length-3])
find(s);
}
int main()
{
char num[1000];
while(~scanf("%s",num))
{
find(num);
printf("%s\n",num);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐