PAT程序设计考题——甲级1007 (最大连续子序列和)
2016-01-09 12:42
453 查看
试题原文链接:点击打开链接
试题要求翻译如下:给定的一段数字序列,求出最大连续子序列和大小,并得出起始位置和结束位置序号,并用空格间隔输出。
例子:
input:
10
-10 1 2 3 4 -5 -23 3 7 -21
output:
10 1 4
代码设计如下:
试题要求翻译如下:给定的一段数字序列,求出最大连续子序列和大小,并得出起始位置和结束位置序号,并用空格间隔输出。
例子:
input:
10
-10 1 2 3 4 -5 -23 3 7 -21
output:
10 1 4
代码设计如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> int* pList = NULL; char* dot = NULL; char* buffer = NULL; int length = 0; int index = 0; int FindMaxSubsequenceSum1() { int firstSum = 0; int backupSum = 0; int startPos = 0; int lastPos = 0; for ( int i = 0; i < length; i++ ) { int secondSum = 0; for ( int j = i; j < length; j++ ) { secondSum += pList[j]; if ( secondSum > firstSum ) { firstSum = secondSum; lastPos = j; } } if ( firstSum > backupSum ) { backupSum = firstSum; startPos = i; } } printf( "%d %d %d", firstSum, startPos, lastPos ); return 0; } /*int FindMaxSubsequenceSum2() { return 0; }*/ int main() { printf( "Please the length of Array:\n"); //length = 12; scanf( "%d", &length ); pList = (int*)malloc( length*sizeof(int) ); buffer = (char*)malloc( length*sizeof(char) ); printf( "Please Input the content of array:\n"); //strcpy(buffer,"-6 2 4 -7 5 3 2 -1 6 -9 10 -2"); getchar(); scanf( "%[^\n]", buffer ); dot = strtok( buffer, " " ); while ( dot != NULL ) { pList[index++] = atoi(dot); dot = strtok( NULL, " " ); } FindMaxSubsequenceSum1(); printf( "\n" ); return 0; }
相关文章推荐
- PAT程序设计练习——甲级1001(标准格式化数字)
- PAT程序设计练习——甲级1002(两个多项式的解析与合并)
- PAT程序设计练习——甲级1003(任意两个城市最短距离、Floyd最短路径算法)
- PAT程序设计考题——甲级1004 遍历树节点(计算树每层的叶子节点数目)
- PAT程序设计考题——甲级1005 数字按位累加(非负数字按位累加和转化成对应英文单词)
- PAT程序设计考题——甲级1006 签到问题(求所有签到人的最早时间和最晚时间)
- JAVA实践非完美·在线处理算法求最大连续子序列和并输出首尾
- PAT程序能力考题——甲级1010(比较任意进制转换的两个数字,是否相等)
- PAT程序设计考题——甲级1009(计算两个多项式相乘的积)
- PAT程序设计考题——甲级1008(Elevator电梯时间计算问题)
- 算法设计与分析——最大连续子序列之和问题
- Java中的String为什么是不可变的? -- String源码分析
- 类类型
- IO的阻塞与非阻塞、同步与异步以及Java网络IO交互方式
- LeetCode Valid Number
- mailx定时任务不能执行
- PHP中mysql_affected_rows()和mysql_num_rows()区别
- Win10专业版怎么解决电脑关机后又自动开机的问题?
- Log4j2介绍和特性实例(四)--过滤器Filter