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