最大子数组和 10.11作业

设计思想:

在上次求最大子数组的基础上,增加一个求随机数的子函数,并且利用将随机数对2求余的方法,产生正、负数。
对随机数函数的取值范围进行控制,控制在int32范围内。
对代码进行运行和调试。
经过上面的思路和不断调试,可以产生1000个范围内的数并进行计算,求得最大子数组。

源程序代码:

 1 #include<iostream> 
 2 #include<iostream> 
 3 #include<time.h> 
 4 #include<stdlib.h> 
 5 using namespace std; 
 6 #define NUM 1000 
 7 int DTGH_Sum(int a[],int n) 
 8 { 
 9     int sum = 0;
10     int *b = (int *) malloc(n * sizeof(int)); 
11     b[0] = a[0]; 
12     for(int i = 1; i < n; i++) 
13     { 
14         if(b[i-1] > 0) 
15             b[i] = b[i - 1] + a[i]; 
16         else 
17             b[i] = a[i]; 
18     } 
19     for(int j = 0; j < n; j++) 
20     { 
21         if(b[j] > sum) 
22             sum = b[j]; 
23     } 
24     delete []b; 
25     return sum; 
26 } 
27 
28 int main()
29 {
30     int a[1005];
31     srand((unsigned)time(NULL));
32     int i;
33     for (i = 0; i < 1000; i++)
34     { 
35          int t;
36         t = rand()%2;
37         if(t==1) t=-1;
38         else t = 1;
39         a[i] = rand() * t;
40         cout<<rand()*t<<'\t';
41     } 
42     cout<<"最大子段和:";
43     cout<<DTGH_Sum(a,1000)<<endl; 
44     return 0; 
45 
46 }

运行结果截图

当子数组和超出int32范围时,结果并不确定,以下为三种情况截图

psp0级开发过程:

 

 

posted on 2018-10-13 17:16  争当博主  阅读(98)  评论(0编辑  收藏  举报

导航