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

    程序思路:

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

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

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

    代码:

    //返回一个整数数组中最大子数组的和
    #include<iostream>
    using namespace std;
    
    int main()
    {
        int sum = 0;//暂存的累加和
        int MaxSum=0;//最大子数组和
        int i,m=1;
        int *a=new int[m];//动态数组
        
        cout << "请输入数组个数
    ";
        cin >> m;
        cout << "输入一个整数数组,包含正负数
    ";
        for (i = 0; i < m; i++)
        {
            cin >> a[i];
        }
        ////////////////////////////////////////////
        for (i = 0; i < m; i++)
        {
            sum += a[i];//累加
            
            if (sum < 0)
            {
                sum =0;//和小于0,就不要了
            }
            
            if (sum > MaxSum)//如果当前累加和大于最大和
            {
                MaxSum = sum;//最大和为当前和
            }
        }
    
        if (MaxSum == 0)//当所有元素都为负值,找最大那个
        {
            MaxSum = a[0];
            for ( i = 1; i < m; i++)
            {
                if (a[i]>MaxSum)
                {
                    MaxSum = a[i];
                }
    
            }
        }
        cout << "最大和=" << MaxSum;
    
    
    }
    View Code

    测试截图:

  • 相关阅读:
    今日总结
    今日总结
    今日总结
    本周总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    vue3函数setUp和reactive函数详细讲解
  • 原文地址:https://www.cnblogs.com/linanil/p/5321391.html
Copyright © 2011-2022 走看看