搜索
查看: 2094|回复: 2
打印 上一主题 下一主题

挑战29,我没理解题意

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-22 17:24:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
本帖最后由 Smallbee 于 2013-5-22 17:30 编辑

题目是:“请在下列1000个数中找出最大的连续5位数。注意:请忽略换行”。
这个连续5位数是指形如“12345”、“78901”这样的数吗?
按照这样的理解,我写的程序最多也只能找到连续的3位数。
我是这样做的:
首先将题目中给出的1000个数复制后保存为一个文本文件,程序中逐个字符从文件中读入到一个数组arr里(已过滤掉换行符);
令首指针ph为0,最大连续5位数max初值为0;
当首指针<995时做如下外循环:
    临时指针pt=首指针;尾指针pe=临时指针+1;临时和 tmp=arr[ph]-48;
    当首指针!=尾指针时做如下内循环(我用首尾指针相等做为不能找到连续5位数的标志):
       如果 arr[pt]+1==arr[pe] 或者 arr[pt]-9==arr[pe](临时指针与尾指针所指的数是连续的),则
           计算临时和 tmp=tmp*10+arr[pe]-48;
           判断临时和是否>10000,若是则保存max 与  tmp 中较大者,
                 并做ph--,tmp=tmp%10000(最后两步预防有连续6位及以上的数);
           临时指针及尾指针均后移一位;
       否则 ph=pe(连续数查找不成功,修改首指针后,退出内循环进行下一趟查找);
    内循环结束
外循环结束
输出最大的连续5位数。

请指教啊{:soso_e163:}

最佳答案

查看完整内容

getchar先读取5个数字,存储在max里面 然后持续读取数字 每读取一个数字,产生一个新5位数a,如果 a>max,那么max=a 一直到getchar返回EOF
沙发
发表于 2013-5-22 17:24:07 | 只看该作者
getchar先读取5个数字,存储在max里面
然后持续读取数字
每读取一个数字,产生一个新5位数a,如果 a>max,那么max=a
一直到getchar返回EOF
板凳
 楼主| 发表于 2013-5-22 19:32:16 | 只看该作者
rosynirvana 发表于 2013-5-22 18:01
getchar先读取5个数字,存储在max里面
然后持续读取数字
每读取一个数字,产生一个新5位数a,如果 a>max, ...

那就是说“连续5位数”并不是说这5个数字连续递增,只是指位置上连续的5个数字。明白了,谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表