第四次程序(结对开发)
Posted 无痕公子的丸子头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四次程序(结对开发)相关的知识,希望对你有一定的参考价值。
题目:返回一个整数数组中最大子数组的和。
要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)
合作伙伴:张江鹏
http://home.cnblogs.com/u/gaara-zhang/
设计思路:
本来我和我的小伙伴打算用分情况的方法来处理这个问题,就是根据数组中各个子数组中正负数的位置进行讨论,不过这样情况也是特别多,用到很多循环。不过幸亏老师在上课时让同学讲了讲关于动态规划的知识给了我们启发。
#include<iostream> using namespace std; int main() { int Array[100]; int max(int A,int B); int i, length = 0;//用来记录数组长 int sumOfArray;//sumOfArray用于存放包含目前的子数组的和的最大值 int sum = 0;//sum用来存放不包含当前数的所有子数组的和的最大值 cout << "请输入数组:" ; for (length = 0;;) { cin >> Array[length]; length++; if (getchar() == \'\\n\') { break; } } sumOfArray = Array[0]; for (i = 1; i < length; i++) { sum = max(sum, sumOfArray); sumOfArray = max((sumOfArray+Array[i]), Array[i]); } sumOfArray = max(sum, sumOfArray); cout << "这个整数数组的子数组之和的最大值为:" << sumOfArray << endl; return 0; } int max(int A, int B) { if (A > B) { return A; } else { return B; } }
以上是关于第四次程序(结对开发)的主要内容,如果未能解决你的问题,请参考以下文章