啊哈磊_编程从这里起步

标题: 挑战29,我没理解题意 [打印本页]

作者: Smallbee    时间: 2013-5-22 17:24
标题: 挑战29,我没理解题意
本帖最后由 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:}

作者: rosynirvana    时间: 2013-5-22 17:24
getchar先读取5个数字,存储在max里面
然后持续读取数字
每读取一个数字,产生一个新5位数a,如果 a>max,那么max=a
一直到getchar返回EOF
作者: Smallbee    时间: 2013-5-22 19:32
rosynirvana 发表于 2013-5-22 18:01
getchar先读取5个数字,存储在max里面
然后持续读取数字
每读取一个数字,产生一个新5位数a,如果 a>max, ...

那就是说“连续5位数”并不是说这5个数字连续递增,只是指位置上连续的5个数字。明白了,谢谢!




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2