1 //作者:王炳午 董龙洋 日期:2015.3.17 2 #include<iostream.h> 3 #include<stdlib.h> 4 #include<time.h> 5 int main() 6 { 7 cout<<"---------------------求数组中子数组和的最大值的小程序----------------------"<<endl; 8 cout<<endl; 9 int a[10]; 10 int i; 11 srand( (unsigned)time( NULL ) );//随机数种子为当前计算机时间。 12 cout<<"得到的一组随机整数(10个数)如下:"<<endl; 13 for(i=0;i<10;i++) 14 { 15 a[i] = rand()%21-10; //随机生成-10 到 10的整数 16 } 17 for(i=0;i<10;i++) 18 { 19 cout<<a[i]<<" "; 20 } 21 cout<<endl; 22 int sum=0; 23 int GreateSum=0; 24 for ( i=0;i<10;i++) 25 { 26 sum+=a[i]; 27 if (sum<0) 28 { 29 sum=0; 30 } 31 if (sum>GreateSum) 32 { 33 GreateSum=sum; 34 } 35 } 36 if (GreateSum==0) 37 { 38 for (int i=0;i<10;i++) 39 { 40 if (GreateSum==0) 41 { 42 GreateSum=a[i]; 43 } 44 else 45 if (GreateSum<a[i]) 46 { 47 GreateSum=a[i]; 48 } 49 } 50 } 51 cout<<"最大值sum:"<<GreateSum<<endl; 52 system("pause"); 53 return 0; 54 }
感想:两人一起去构思一起去想算法,本题最难的是算法的构思,开始时我和我的小伙伴都没有注意时间复杂度只能为n,于是我充当领航员的角色,合作下主要是由他书写代码和细节类的书写,完成了一个代码,可是后来发现时间复杂度为n*n。接着我两就想法简化时间复杂度,利用DP算法构思出了程序,在原来的一些基础上,共同完成了本次任务,我觉得两人结对,会使发现错误的几率大大增加,特别是一些算法上的问题,对代码的完成速度和质量都有很大的好处。以下是我和小伙伴的合照(左边是我,右边是我的小伙伴)