hjl-cqu
cqu
C++博客
首页
新随笔
新文章
联系
聚合
管理
posts - 3, comments - 10, trackbacks - 0
参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
其中题目如下:
给定一个整数,求出比其大的最小的不重复数字,不重复数字小于100000,不重复数字定义如下:
任意两个相邻位上的数字均不相等。例如:1212,323,65是不重复数字,122,100,1123为重复数字。
实例:
输入:99
输出:101
输入:65
输出:67
我编的程序如下:
#include
<
iostream
>
using
namespace
std;
int
main()
{
int
start
=
99
;
//
给出的数据,求其不重复数
int
sgnl
=
1
;
int
shu
=-
1
;
int
T;
int
p;
int
a[]
=
{
-
1
,
-
2
,
-
3
,
-
4
,
-
5
,
-
6
}
;
for
(
int
i
=
start;i
<
100000
;i
++
)
{
//
sgnl=-1;
T
=
i;
p
=
0
;
while
(T
!=
0
)
{
a[p]
=
T
%
10
;
T
=
T
/
10
;
if
(p
>
0
)
{
if
(a[p
-
1
]
==
a[p])
{
sgnl
=
0
;
break
;
}
}
//
if (p>0)
if
(T
==
0
)
if
(sgnl
!=
0
)
{
shu
=
i;
i
=
100000
;
}
p
++
;
}
//
while (T!=0)
for
(
int
y
=
0
;y
<
6
;y
++
)
{
a[y]
=
0
-
1
;
}
}
//
for (int i=50;i<60;i++)
cout
<<
shu
<<
endl;
return
0
;
}
开始的时候我认为上述代码是没有任何问题的,但是当每次运行程序的时候都得不到正确的结果。经过多次的调试,我发现在上述While循环中为sgnl赋值以后,到下面的判断处是,sgnl的值貌似不存在一样。
然后我对程序做了一点修改,仅仅在for循环的里边加了一条语句:sgnl=-1;也就是上述代码注销的地方,然后再次运行程序,结果无误。
虽然发现了问题,可是我并处清楚这是问什么,所以贴出来希望各位大虾能够帮忙解答一下。
小弟不胜感激。
期待中。
posted on 2011-05-28 13:11
hjl
阅读(2082)
评论(8)
编辑
收藏
引用
FeedBack:
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示[未登录]
2011-05-28 14:27 |
Eric
原因很简单,每次你检测完一个数都需要把sgnl标志重置,如果你吧sgnl换成bool型就会更清晰一些,其实你吧sgnl=-1换成sgnl=1也是可以的,而且这样更加符合你前面初始化sgnl=1的定义。
而且,其实连sgnl,a什么的都可以不需要的,我对你的程序做了些精简:
#include <iostream>
using namespace std;
int main()
{
int start=99; //给出的数据,求其不重复数
int T,cur,last;
for ( int i=start+1;i<100000;i++ ) {
T=i; cur=0; last=-1;
while ( T!=0 ) {
cur=T%10;
T/=10;
if ( cur==last ) {
break;
}
last=cur;
}
if ( T==0 ) {
cout<<i<<endl;
return 0;
}
}
}
回复
更多评论
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示[未登录]
2011-05-28 16:58 |
111
重大的吧!
回复
更多评论
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
2011-05-28 23:08 |
hjl
问题解决了
回复
更多评论
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
2011-05-29 08:44 |
hxg
@Eric
start = 65时,输出是66
回复
更多评论
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
2011-05-29 11:01 |
付翔
我觉得 你如果写一个函数 判断这个数字是不是 不重复数字
对于给定的 data
从 data 往上 遍历 知道找到不重复的数字
回复
更多评论
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
2011-05-31 11:43 |
qinqing1984
你这个算法,对某些最坏情况的数据,太慢了!
回复
更多评论
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
2011-05-31 11:44 |
qinqing1984
你这个算法,很常规,对于某些数据,最坏情况,太慢了!
回复
更多评论
#
re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示[未登录]
2011-06-12 09:33 |
wf
把数字打印到字符数组内,然后依次比较这个字符串相邻位置是否相等。
这样岂不更简单
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2011年5月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2011年5月 (1)
2010年4月 (1)
2010年3月 (1)
搜索
最新评论
1. re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示[未登录]
把数字打印到字符数组内,然后依次比较这个字符串相邻位置是否相等。
这样岂不更简单
--wf
2. re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
你这个算法,很常规,对于某些数据,最坏情况,太慢了!
--qinqing1984
3. re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
你这个算法,对某些最坏情况的数据,太慢了!
--qinqing1984
4. re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
我觉得 你如果写一个函数 判断这个数字是不是 不重复数字
对于给定的 data
从 data 往上 遍历 知道找到不重复的数字
--付翔
5. re: 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示
@Eric
start = 65时,输出是66
--hxg
阅读排行榜
1. 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示(2082)
2. 二分插入排序算法(1724)
3. 大整数划分问题(415)
评论排行榜
1. 参加第三届华为杯程序设计大赛遇到的一个小问题,求解示(8)
2. 大整数划分问题(2)
3. 二分插入排序算法(0)