结队开发:林彦汝、张金
题目:返回一个整数数组中最大数组的和。
要求:
1、输入一个整型数组,数组里有正数也有负数;
2、数组中连接的一个或多个整数组成一个子数组,每个子数组都有一个和;
3、求素有子数组的和的最大值。
本节课是学习结队开发,故先分配了任务:我主要负责程序分析,代码编程;张金负责代码复审,代码测试计划。
思路:我和搭档张金一起分析题目,统一解决方法。首先定义2个数组(假设有n个数),关系如下:
max[0]为{arr[0]、arr[0]+arr[1]、...、arr[0]+arr[1]+...+arr[n-1]+arr[n]}中的最大值;
max[1]为{arr[1]、arr[1]+arr[2]、...、arr[1]+arr[2]+...+arr[n-1]+arr[n]}中的最大值;
......
max[n-1]为{arr[n-1]、arr[n-1]+arr[n]}中的最大值;
max[n]为{arr[n]}中的最大值(即max[n]=arr[n])。
再比较max数组,从中找到最大值。
源代码:
//数组长度为5。
1 #include<iostream.h> 2 3 int main() 4 5 { 6 7 int arr[5]; 8 9 int i,j; 10 11 int max[5]; 12 13 cout<<"input array (five numbers):"<<endl; 14 15 for(i=0;i<5;i++) 16 17 { 18 19 cin>>arr[i]; 20 21 } 22 23 for(i=0;i<5;i++) 24 25 { 26 27 max[i]=arr[i]; 28 29 } 30 31 for(j=0;j<4;j++) 32 33 { 34 35 for(i=j+1;i<5;i++) 36 37 { 38 39 arr[j]=arr[j]+arr[i]; 40 41 if(max[j]<arr[j]) 42 43 { 44 45 max[j]=arr[j]; 46 47 } 48 49 } 50 51 } 52 53 for(i=0;i<5;i++) 54 55 { 56 57 if(max[0]<max[i]) 58 59 max[0]=max[i]; 60 61 } 62 63 cout<<"ADDmax="<<max[0]; 64 65 return 0; 66 67 }
运行结果:
总结体会:
这次结队开发进行的很顺利,我们在课间就完成了作业,在过程中收获了很多。首先是在讨论思路时,需要两个人的大致方向是一致的,虽然这次做的程序是比较简单的,但在做大项目时,有很多模块时,这点应该就很重要;其次是在实现功能上,虽然我是主要负责代码编程,但在动手敲键盘之前我们也讨论了实际的解决方法,用什么结构、怎么嵌套...几分钟下来就发现每个人想法也还是不同的,而且每个人对语言的掌握程度、注意和侧重的细节也不同,互相交流可以不断提升编程技能,不断开拓;最后是在编程过程,我们都还比较粗心,两个人可以互相提醒和监督。
结队开发是以后工作后必不可少的,现在不仅要锻炼自身的编程能力,同时更要注重培养团队合作的能力。