码迷,mamicode.com
首页 > 编程语言 > 详细

一组数组中最大子数组之和 (更新)

时间:2015-03-29 23:39:33      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

 代码:

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!