标签:
题目:返回一个整数数组中最大数组的和。
要求:
输入一个整形数组,数组里有正也有负。
数组中连续的一个或多个整数组成一个数组,每个字数组都有一个和。
球所有字数组的和的最大值,要求时间复杂度为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个数值:\n"<<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班 翟凯)通过这次结对编写程序,发现编程不再是一个人的事,互相有了新的想法就可以进行交流,
共同分享更漂亮的完成结果的喜悦。
下面是我们的合作剪影(^_^):
标签:
原文地址:http://www.cnblogs.com/bill927/p/4346884.html