• 关于数组的第一次试验



     

    题目:返回一个整数数组中最大子数组的和。

    要求:

      1、 输入一个整形数组,数组里有正数也有负数。

      2、 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

      3、 求所有子数组的和的最大值。要求时间复杂度为O(n)

    设计思想:

      核心算法:动态规划。

    源代码:

    //数组1
    //胡浩特、朱子嘉 2016/3/21
    
    #include<iostream>
    using namespace std;
    
    int MaxSum3(int a[], int n){//优化方案 时间O(n) 空间  O(1)
        //int A,N;
        int nStart = a[n - 1];
        int nAll = a[n - 1];
        for (int i = n - 2; i >= 0; i--)
        {
            if (nStart<0)
                nStart = 0;
                nStart += a[i];
            if (nStart>nAll)
                nAll = nStart;
        }
        return nAll;
    }
    int main()
    {
    
        int i, length;
        cout << "请输入数组长度:";
        cin >> length;
        int a[50];
        cout << "请输入数组值:";
    
        for (i = 0; i < length; i++)
        {
            cin >> a[i];
        }
        
    
        cout<<MaxSum3(a, length)<<endl;
        return 0;
    }

    结果截图:
    1.都为正数,最大值为数组和。

    2.都为负数,结果为最大负数

    3.有正有负有0

    总结:

    整个实验关键在于算法的实现,经过查找资料和自己研究才找到算法。对于我们来说,实验很简单但是还是要花费不少的努力。

    (PS:工作靓照一张:)

  • 相关阅读:
    设计克制
    高性能动画的
    点选日历控件
    adobe工具软件应用
    Visual Studio 2022 性能增强:更快的 C++、优化 Git 分支切换
    省市县的字典表
    Hype 4.0(Mac系统)的布局功能
    RN相关的文章超过100篇高质量文章
    前端格局
    移动端关于平方字体的适配
  • 原文地址:https://www.cnblogs.com/0jiajia1/p/5323396.html
Copyright © 2020-2023  润新知