数组中最大子数组的和

题目:

  1.       求一数组中最大子数组的和
  2. 思路:
  3.       输入到数组中,直到输入回车停止
  4.       动态规划。
  5.       maxSum表示前 i 个数组最大子数组的值。maxSumOfArray为maxSumOfArray+Array[i] 与 Array[i]的最大值 。那么maxSum的值应为maxSum与maxSumOfArray的最大值。
  6.      递推式:
  7.      maxSumOfArray=max(maxSumOfArray+Array[i],Array[i]);
  8.      maxSum=max(maxSum,maxSumOfArray);
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int Array[100];  //定义数组
 6     int length;   //数组长度
 7     for(length=0;;)  //输入数组  遇到Enter即为输入完
 8     {
 9         cin>>Array[length];
10         length++;
11         if(getchar()=='\n')
12         {
13             break;
14         }
15     }
16     int maxSumOfArray,maxSum;  
17     maxSumOfArray=maxSum=Array[0];
18     //当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。
19     //如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。
20     for(int i=1;i<length;i++)
21     {
22         maxSumOfArray=max(maxSumOfArray+Array[i],Array[i]);   //变量maxSumOfArray 为包含Array[i] 与Array[i]    取最大
23         maxSum=max(maxSum,maxSumOfArray);  ////变量maxSum 为maxSum 与 maxSumOfArray    取最大
24     }
25     cout<<"最大子数组和:"<<maxSum<<endl;
26     return 0;
27 }

 

结果截图:

我的队友:于磊http://www.cnblogs.com/cnyulei/

posted @ 2016-03-24 20:32  _小青年  阅读(380)  评论(1编辑  收藏  举报