|
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:}
|
|