最大子序列和问题
来源:互联网 发布:周末午夜光明知乎 编辑:程序博客网 时间:2024/05/22 12:59
问题描述:
输入一组整数,求出这组数字子序列和中最大值。也就是只要求出最大子序列的和,不必求出最大的那个序列。例如:
序列:-2 11 -4 13 -5 -2,则最大子序列和为20。
序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2,则最大子序列和为16。
/* seq:整数组,seqSize:整数组大小 */int MaxSubSeqSum(int *seq, int seqSize) { int j; int maxSum; int tmpSum; if ((0 == seq) || (seqSize < 1)) { /* 出错 */ return 0; } maxSum = seq[0]; tmpSum = seq[0]; /* 从第一个数开始,每次计算子序列和(包括一个数 的情况),并通过与当前最大值比较,更新当前最大值。 此时,如果子序列和小于0,说明只能重新往后查找 更大的子序列和 */ for (j = 1; j < seqSize; j++) { if (tmpSum > maxSum) { maxSum = tmpSum; } if (tmpSum < 0) { tmpSum = 0; } tmpSum += seq[j]; } /* 处理加了最后一个数的tmpSum */ if (tmpSum > maxSum) { maxSum = tmpSum; } return maxSum; }
测试用例:
-2, 11, -4, 13, -5, -2
-2, -11, -4, -13, -5, -2
-2, -11, 4, 13, -5, -2
0, -11, 4, 13, -5, -2
-6, 2, 4, -7, 5, 3, 2, -1, 6, -9, 10, -2
5, -11, 8, 3, -5, -2
5, -8, -3, 8, -3, -5, -2
- 最大和子序列问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题~~
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- OCP-1Z0-053-V12.02-675题
- 链表:反转、合并
- PHP, Mysql备忘
- Unity3D 插件
- hdu 1506 1505
- 最大子序列和问题
- 关于XBYTE的使用
- Pushlet实例解析
- C#加密解密小工具
- 给定数据段中找到第一个有效bit实现(文件系统)
- FORM表单中onclick()、submit()与onsubmit()的问题
- socket fs(1)
- 上报和分发消息的流程
- 浏览按钮操作