zoukankan      html  css  js  c++  java
  • 一组数组中最大子数组之和 (更新)

     代码:

     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最大范围下的最大值。

     队友合作:

  • 相关阅读:
    左耳听风
    极客时间-算法
    极客时间-左耳听风阅读笔记
    涨知识
    学做饭
    开发流程
    线上问题复盘
    反思学习复习练习
    系统安全(转)
    单元测试
  • 原文地址:https://www.cnblogs.com/zrdm/p/4376617.html
Copyright © 2011-2022 走看看