您的位置:首页 > 其它

软件工程结对开发之求一个数组中连续最大子数组之和

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。由此我和陈志利按照这个思路编程如下:

四、代码:

#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,有正有负及各种特殊情况等,都运行正确。



六、总结:

虽然这次不是第一次结对做项目,但是过程中明显感觉解决问题的时候比一个人考虑的周到全面,效率提高很多,相互学习配合比较顺利。

七、工作合照

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐