软件工程结对开发之求一个数组中连续最大子数组之和
2015-03-18 13:20
337 查看
一、团队成员:
檀威,陈志利
二、项目名:
求一个数组中连续最大子数组之和
三、我们的设计思路:
设sum[i]为以第i个元素结尾且和最大的连续子数组。对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且它们之和最大的连续子数组要么是以第i-1个元素结尾且它们之和最大的连续子数组加上这个元素,要么是只包含第i个元素,即sum[i] = max(sum[i-1] + arr[i], arr[i])。可以通过判断sum[i-1] + arr[i]是否大于arr[i]来做选择,而这实际上等价于判断sum[i-1]是否大于0。由此我和陈志利按照这个思路编程如下:
四、代码:
五、运行及测试截图:
测试了当全是负数,全是正数,全是0,有正有负及各种特殊情况等,都运行正确。
六、总结:
虽然这次不是第一次结对做项目,但是过程中明显感觉解决问题的时候比一个人考虑的周到全面,效率提高很多,相互学习配合比较顺利。
七、工作合照
檀威,陈志利
二、项目名:
求一个数组中连续最大子数组之和
三、我们的设计思路:
设sum[i]为以第i个元素结尾且和最大的连续子数组。对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且它们之和最大的连续子数组要么是以第i-1个元素结尾且它们之和最大的连续子数组加上这个元素,要么是只包含第i个元素,即sum[i] = max(sum[i-1] + arr[i], arr[i])。可以通过判断sum[i-1] + arr[i]是否大于arr[i]来做选择,而这实际上等价于判断sum[i-1]是否大于0。由此我和陈志利按照这个思路编程如下:
四、代码:
#include<iostream.h> void main() { while(1) { int length; int *arr=new int[length]; cout<<"请输入该数组长度:"; cin>>length; cout<<"请输入该数组:"; for(int i=0;i<length;i++) { cin>>arr[i]; } int result = arr[0]; int sum = arr[0]; for(i=1;i<length;i++) { if (sum > 0) { sum += arr[i]; } else { sum =arr[i]; } if (sum >result) result = sum; } cout<<"该数组中最大连续子数组之和是:"<<result<<endl; cout<<"----------------------------------------"<<endl; } }
五、运行及测试截图:
测试了当全是负数,全是正数,全是0,有正有负及各种特殊情况等,都运行正确。
六、总结:
虽然这次不是第一次结对做项目,但是过程中明显感觉解决问题的时候比一个人考虑的周到全面,效率提高很多,相互学习配合比较顺利。
七、工作合照
相关文章推荐
- 软件工程结对开发之求一个或者多个数组中连续最大子数组之和3
- 5、软件工程结对开发之求一维数组中连续最大子数组之和
- 软件工程结对开发之求一维数组中连续最大子数组之和2
- 3、软件工程结对开发之求一维数组中连续最大子数组之和并判断溢出
- 4、软件工程结对开发之求一维数组中连续最大子数组之和
- 2、软件工程结对开发之求二维数组中连续最大子数组之和
- 软件工程结对开发之求二维数组中连续最大子数组之和
- 1、软件工程结对开发之求一维数组中连续最大子数组之和
- 软件工程课堂训练——结对开发之环数组最大和
- 结对开发——返回一个整数数组中最大子数组的和
- 结对开发之返回一个整数数组中最大子数组的和
- 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
- 结对开发之求任意一个数组的最大子数组
- 软件工程结对开发——一维最大子数组求和溢出问题
- 结对开发之《返回一个整数数组中最大子数组的和》
- 结对开发之《返回一个整数数组中最大子数组的和》
- 结对开发之《返回一个二维整数数组中最大子数组的和》
- 《团队开发一(求一个数组的连续的子数组之和的最大值)》
- 结对开发-返回一个整数数组中最大子数组的和(首尾相接版)
- 结对开发之《返回一个二维整数数组中最大子数组的和》