标签:
一,开发题目与要求:
题目:输入一个整数组,要求输出最大字数组的和。
要求:要求输入一个整数数组,可以有正有负
任意一个多个连续的整数为一个数组,求每一个字数组的和
要求输出最大数组的和,时间复杂度为O(n)
结对编程的要求:
两个人结对共同完成编程任务
一个人主要负责驾驶,即操作键盘负责代码的输入
一个人主要负责导航,即代码复审,思路探讨,程序测试检测
发表一篇两个人合作过程中的体会及如何解决问题的思路
二,设计思路:
两人共同阅读题目了解到最大子数组的概念是数组中连续的一个或多个整数组成的一个数字,注意到几个关键字分别是:连续,一个或多个,整数;
要求最大值结果,故定义返回最大值的函数Largest(),将数组分别以1,2,3,4,5为单位将数组划分成若干个子数组,分别调用Largest()函数求最大值,并将结果保存到新的数组b中,再次调用Largest()函数求得b数组中的最大值,即是所要求的结果。
三,源代码:
#include <iostream.h> int b[5]={0}; int Largest( int list[], int length) { int i,max=list[0]; //初始化的时候要赋值, for (i=0;i<=(length-1);i++) { if (list[i]>max) { max=list[i]; } } return max; } int main( void ) { int a[5]; cout<< "请输入5个整数,中间用空格隔开:" <<endl; for ( int j=0;j<5;j++) { cin>>a[j]; } cout<< "连续1个分组最大结果:" <<Largest(a,5)<<endl; b[0]=Largest(a,5); for ( int i=0;i<4;i++) { b[i]=a[i]+a[i+1]; } cout<< "连续2个分组最大结果:" <<Largest(b,4)<<endl; b[1]=Largest(b,4); for (i=0;i<3;i++) { b[i]=a[i]+a[i+1]+a[i+2]; } cout<< "连续3个分组最大结果:" <<Largest(b,3)<<endl; b[2]=Largest(b,3); for (i=0;i<2;i++) { b[i]=a[i]+a[i+1]+a[i+2]+a[i+3]; } cout<< "连续4个分组最大结果:" <<Largest(b,2)<<endl; b[3]=Largest(b,2); for (i=0;i<1;i++) { b[i]=a[i]+a[i+1]+a[i+2]+a[i+3]+a[i+4]; } cout<< "连续5个分组最大结果:" <<Largest(b,1)<<endl; b[4]=Largest(b,1); cout<< "结果为:" <<Largest(b,5)<<endl; return 0; } |
五,合作过程中的体会,及解决冲突的办法和策略:
1,合作过程中我主要负责导航工作即代码的复审和测试计划。
2,通过本次结对开发我的体会是,结对开发能够提高工作效率和工作质量,我的编程能力不好,因为平时比较懒三年几乎没怎么么敲过代码,不过逻辑思维还是可以的,就拿这次合作来说吧,我们很快就讨论出了解题的思路,虽然用的方法比较笨吧,但是问题得到了解决,就目前状况来说已经可以了。在工作的过程中我负责代码的复审和程序的测试,这也使程序少犯了很多小错误。而且通过本次合作我们学会了怎样才能使两个人合作的更好,那就是要找到两个人的擅长,做到扬其长,避其短,才能使工作做的更好。
3.照片:
标签:
原文地址:http://www.cnblogs.com/hushunli/p/4351347.html