结对开发:林彦汝、张金
题目:返回一个整数数组中最大数组的和。
要求:
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 }
运行结果:
总结体会:
这次结对开发进行的很顺利,我们在课间就完成了作业,在过程中收获了很多。首先是在讨论思路时,需要两个人的大致方向是一致的,虽然这次做的程序是比较简单的,但在做大项目时,有很多模块时,这点应该就很重要;其次是在实现功能上,虽然我是主要负责代码编程,但在动手敲键盘之前我们也讨论了实际的解决方法,用什么结构、怎么嵌套...几分钟下来就发现每个人想法也还是不同的,而且每个人对语言的掌握程度、注意和侧重的细节也不同,互相交流可以不断提升编程技能,不断开拓;最后是在编程过程,我们都还比较粗心,两个人可以互相提醒和监督。
结对开发是以后工作后必不可少的,现在不仅要锻炼自身的编程能力,同时更要注重培养团队合作的能力。