zoukankan      html  css  js  c++  java
  • 整数数组中最大子数组求和01

    程序思路:

    1.假如a[i]前面的和小于0,就把暂存的和清0(因为负数+a[i]会把a[i]值拉低)

    2.假如暂存的和大于最大和MaxSum,就将这个和给MaxSum(MaxSum储存子数组最大和)

    3.如果MaxSum值为0,说明它的初始值一直没变过,即:没有正数!所以就找整个数组最大那个数

    代码:

     1 //返回一个整数数组中最大子数组的和
     2 #include<iostream>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int sum = 0;//暂存的累加和
     8     int MaxSum=0;//最大子数组和
     9     int i,m=1;
    10     int *a=new int[m];//动态数组
    11     
    12     cout << "请输入数组个数
    ";
    13     cin >> m;
    14     cout << "输入一个整数数组,包含正负数
    ";
    15     for (i = 0; i < m; i++)
    16     {
    17         cin >> a[i];
    18     }
    19     ////////////////////////////////////////////
    20     for (i = 0; i < m; i++)
    21     {
    22         sum += a[i];//累加
    23         
    24         if (sum < 0)
    25         {
    26             sum =0;//和小于0,就不要了
    27         }
    28         
    29         if (sum > MaxSum)//如果当前累加和大于最大和
    30         {
    31             MaxSum = sum;//最大和为当前和
    32         }
    33     }
    34 
    35     if (MaxSum == 0)//当所有元素都为负值,找最大那个
    36     {
    37         MaxSum = a[0];
    38         for ( i = 1; i < m; i++)
    39         {
    40             if (a[i]>MaxSum)
    41             {
    42                 MaxSum = a[i];
    43             }
    44 
    45         }
    46     }
    47     cout << "最大和=" << MaxSum;
    48     return 0;
    49 }
    View Code

     测试截图:

    此次结对编程队友为 李娜。

  • 相关阅读:
    ADERA3 省选模拟赛 SPOJ LMCONST
    TYVJ 1730 二逼平衡树 线段树套平衡树
    BZOJ 1059 [ZJOI2007]矩阵游戏 二分图匹配
    BZOJ 1056 [HAOI2008]排名系统 Splay+Hash
    OI教会我的
    BZOJ 1055 [HAOI2008]玩具取名 DP
    BZOJ 1058 [ZJOI2007]报表统计 Splay
    为自己而奋斗
    [总结]高斯消元&XOR方程
    我 的 2013
  • 原文地址:https://www.cnblogs.com/ning-JML/p/5323155.html
Copyright © 2011-2022 走看看