结队开发1----最大子数组
1、题目:
返回一个整数数组中最大子数组的和。
2、要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
3.开发过程及思路:
我的搭档是范德一,我们在开始准备实验的时候都认为通过两次循环来存储数组的值,而且实现的也比较顺利,因为在之前我们做过相似的实验,在后面的求和的过程也比较一致,但是在求最大的和的时候,我们遇到了问题,由于循环结构和条件结构比较多,使得我们在设置和的初始值时嵌套的不合适,每一次循环都会重置和的值,后来经过我们的研究,将初始值放到循环结构的外部,才使问题得到解决。
4.程序代码:
#include<iostream.h>
int main()
{
int a[10];
int m; //m是每组个数
int *sum=new int[10];
cout<<"请输入数组:"<<endl;
cout<<"*********************************"<<endl;
for(int i=0;i<10;i++)
{
cin>>a[i];
}
cout<<"*********************************"<<endl;
cout<<"请输入每组个数:"<<endl;
cin>>m;
cout<<"*********************************"<<endl;
int temp=0;
for(int n=0;n<m;n++)
{
temp=temp+a[n];
}
for(int k=0;k<=(10-m);k++)
{
sum[k]=0;
for(int j=k;j<(k+m);j++) //a[k]是每组第一个数
{
sum[k]=sum[k]+a[j];
}
if(sum[k]>temp)
{
temp=sum[k];
}
}
cout<<"最大和为: "<<temp<<endl;
cout<<"*********************************"<<endl;
return 0;
}
5.运行结果截图


6.合作感受
通过本次合作实验,让我体会到了合作的力量,对于这次实验而言,一个人完成其实并不难,只是时间长短的问题,但是两个人合作使得实验的进度有很大的提升,而且两个人合作的时候也会出现分歧,但是我觉得分歧是好事,因为出现分歧,使得彼此之间有了更多的交流,一个人的知识和技能往往是不够的,只有通过更多的交流才能学习到彼此的长处,在本次实验中我在一开始认为和的初始值应该放到循环体的内部,但在几次的调试之后,我们发现无法正确的比较出最后的结果,在几次研究之后,我们交流了一下思想,发现确实应该把初始值的设定放到循环体的外部,才使得程序运行正常。
7.结队成员合照


浙公网安备 33010602011771号