2014百度面试题目---“求比指定整数大且最小的不重复数”解答

题目:给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。

 

代码:

#include <iostream>
using namespace std;


bool isthat(int x);

int main( )
{
	int n;
	cin>>n;
	//while(cin>>n)
	//{
		int m = n+1; //满足条件,比n大
		cout<<"m = n+1"<<m<<endl<<endl;
		while(1)
		{
			int x = m;
			//判断是否为不重复数
			bool yes = isthat(x);
			if(yes)
			{
				cout<<x<<endl;
				break;
			}
			m++;
		}//逐个往上加
//	}//while(cin>>n)
	return 0;
}


bool isthat(int x)
{
	int m = x;
	int x1 = m%10;  //取余
	m = m/10;  //取商
	int x2;
	while(m)
	{
		x2 = m%10;
		if(x1 == x2)
			return false;  //重复数
		x1 = x2;
		m = m/10;
	}
	return true;   //不重复数
}

 

posted @ 2014-09-17 16:52  NSDaBen  阅读(158)  评论(0编辑  收藏  举报