标签:
代码:
1 //XiaoSong Du 2015/3/22 2 #include <iostream> 3 #include <time.h> 4 using namespace std; 5 #define N 1000 6 7 void main() 8 { 9 int a[N],d = 0,d1 = 0; 10 int maxd ,maxd1,end1 = 0,end2=0; 11 12 srand((unsigned int)time(0)); 13 14 for (int i = 0;i < N;i++) 15 { 16 a[i] = rand()%50 - 25; 17 cout << a[i] << " "; 18 } 19 cout << endl; 20 21 maxd = a[0]; 22 for (int i = 0;i < N;i++) 23 { 24 d += a[i]; 25 if (d > maxd) 26 { 27 maxd = d; 28 end1 = i; 29 } 30 if(d < 0) 31 { 32 d = 0; 33 } 34 } 35 36 maxd1 = a[N-1]; 37 for (int i = N-1;i >= 0;i--) 38 { 39 d1 += a[i]; 40 if (d1 > maxd1) 41 { 42 maxd1 = d1; 43 end2 = i; 44 } 45 if(d1 < 0) 46 { 47 d1 = 0; 48 } 49 } 50 51 cout << "子数组为:"; 52 for (int i = end2;i <= end1;i++) 53 cout << a[i] << " "; 54 cout << endl; 55 cout << "和为: " << maxd << endl; 56 }
结果截图:
每个元素是int32 类型的,出现子数组之和大于整型表示的最大范围会出现的情况是这个数组中的数之和在不超过int最大范围下的最大值。
队友合作:
标签:
原文地址:http://www.cnblogs.com/zrdm/p/4376617.html