zoukankan      html  css  js  c++  java
  • 求数组中的最大子数组1

    题目要求:
          (1)输入一个整形数组,数组里有正数也有负数。
          (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
          (3)求所有子数组的和的最大值。要求时间复杂度为O(n)

    题目实现方法:(1)暴力求解     (2)分治算法       (3)动态规划算法

    (3)动态规划算法:

           设计思路:

                      设数组为A[],先求的数组A[0]到A[j]中的最大子数组及最大子数组的和SUM;再根据SUM的值,求得数组A[0]到A[j+1]的最大子数组以及最大子数组的和。按照此步骤,一直求到数组A[]的最后一个数为止。

            

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
        //动态规划的方法
        int intArray[100];     //输入数据的数组
        int intNum;            //用户输入的数量限制
        int intPre;            //记录最大子数组中的第一个数的位置
        int intAfter;          //记录最大子数组中的最后一个数的位置
        int intSum;            //最大值,记录的是最大子数组的最大值
        int intCurSum;         //当前最大值
        intSum = -65535;
        intCurSum = 0;
    
        intNum = 0;
        cout << "请输入数组(最大不要超过100个数):" << endl;
        for (int i = 0; i < 100; i++)
        {
            if (cin.peek() == 10)
            {
                cin.clear();
                break;
            }
            cin >> intArray[i];
            intNum++;
        }
    
        intPre = 0;            //初始化最大子数组的第一个数的位置为0
        for (int i = 0; i < intNum; i++)
        {
            intCurSum = intCurSum + intArray[i];
            if (intCurSum>intSum)
            {
                intSum = intCurSum;
                intAfter = i;
            }
            if (intCurSum < 0)
            {
                intSum = 0;
                intCurSum = 0;
                intPre = i+1;
            }
        }
        
        cout << "最大的子数组为:";
        for (int i = intPre; i <= intAfter; i++)
        {
            cout << intArray[i] << " ";
        }
        cout << endl;
        cout << "最大的子数组的和为:" << intSum << endl;
    
        return 0;
    }

    实验截图:

  • 相关阅读:
    Android studio 几个坑,值得注意下。
    Android studio使用技巧,不定期更新。
    Android生猛上手,先写个拨号器。
    Ubuntu11.10安装教程,非虚拟机
    在线编辑器CKEditor,多图上传功能实现
    sql 中的NULL小问题 ,大bug
    工资低的.Net程序员,活该你工资低
    30岁的老龄程序员 ,不学习就会被淘汰
    计算商品税额和商品价格保留小数的时候的坑
    大话设计模式--简单工厂模式
  • 原文地址:https://www.cnblogs.com/seven-seven/p/5321330.html
Copyright © 2011-2022 走看看