• 个人作业1—数组


    题目:

    返回一个整数数组中最大子数组的和

    要求:

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

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

    求所有子数组的和的最大值。要求时间复杂度为O(n)。
     
    设计思想:假设第二个是最大值,从第二个元素开始循环,加上其前一个元素,判断是否大于当前数(即前一个元素是否是正数),当和大于最大值时,重置最大值为和
     
    源代码:
    #include<iostream>
    using namespace std;
    
    int  max(int a, int  b)
    {
        return a>b ? a : b;
    }
    
    int main()
    {
    
        int a[100], i, n;
        cout << "请输入数组长度:" << endl;
        cin >> n;
        cout << "请输入数组元素:" << endl;
        for (i = 1; i <= n; i++)
            cin >> a[i];
    for (i = 2; i <= n; i++) { if (a[i] + a[i - 1]>a[i]) a[i] = a[i] + a[i - 1]; } int result = -100000; for (i = 1; i <= n; i++) result = max(result, a[i]); cout << result << endl; return 0; } }
    结果截图:
     
     
    总结:这道题是老师在课堂上讲解的一道题,很考验算法,对于不懂算法的来说有一点=定的难度
  • 相关阅读:
    python3 sorted()函数解析
    MySql 关键字
    python的 a,b=b,a+b 和 a=b b=a+b 的区别
    python3 all() 函数用于检查实参
    Python3 urllib模块
    Python3 shutil模块
    Python3 sys模块
    Python 异常处理和断言
    Python3 os模块
    Pytho3 file open方法
  • 原文地址:https://www.cnblogs.com/ywqtro/p/12377046.html
Copyright © 2020-2023  润新知