结对编程开发--课程练习

题目:返回一个整数数组中最大数组的和。

  要求:

    输入一个整形数组,数组里有正也有负。

    数组中连续的一个或多个整数组成一个数组,每个字数组都有一个和。

    球所有字数组的和的最大值,要求时间复杂度为0(n)。

    结对编程。

实现过程:

  因为要求时间复杂度为0(n),所以本题难以通过简单学过的算法来解决,

  必须结合数组的特点。我负责编程,附上源码和结果。

  程序源代码:

 1 #include<iostream>
 2 #include<ctime>
 3 using namespace std;
 4 int main()
 5 {
 6     clock_t start, finish;  
 7     double  duration;  
 8     /* 测量本程序计算运行时间*/  
 9     start = clock();   
10     srand((unsigned)time(NULL)); 
11     int * arr=new int[10];
12     int result,sum=0,k=0;
13     int randoms,count1=0,count2=0,c1=0,c2=0;
14 
15     cout<<"随机产生10个数值:
"<<endl;
16     for ( int i=0; i<10; i++ ) {
17         randoms = ( -rand()%100 + ( rand()%100 ) );
18         arr[i] = randoms;
19         cout<<"数组元素"<<i+1<<"分别为:"<<arr[i]<<endl;
20     }
21     result=arr[0];
22     for ( int j=0; j<10; j++ ) {
23         if ( sum>=0 ){ c2=j; sum+=arr[j]; }
24         else { c1=j; sum=arr[j]; }
25         if( result < sum ) {
26             count1=c1;
27             count2=c2;
28             result=sum;
29         }
30     }
31     cout<<endl<<"从第"<<count1+1<<"个元素到第";
32     cout<<count2+1<<"个元素为最大数组"<<endl<<endl;
33     cout<<"最大数组之和:"<<result<<endl<<endl;
34 
35     finish = clock();  
36     duration = (double)(finish - start) / CLOCKS_PER_SEC;  
37     cout<<"程序运行时间:"<<duration<<endl;  
38 
39     return 0;
40 }

  程序运行结果:

   多次运行结果符合要求。

结对开发总结

    我和我的小组组成员(信1201-1班 翟凯)通过这次结对编写程序,发现编程不再是一个人的事,互相有了新的想法就可以进行交流,

  共同分享更漂亮的完成结果的喜悦。

下面是我们的合作剪影(^_^):

   

 

原文地址:https://www.cnblogs.com/bill927/p/4346884.html