zoukankan      html  css  js  c++  java
  • Task 3 求最大数组和

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

    (要求:输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    求所有子数组的和的最大值。要求时间复杂度为O(n)。)
     
    1.设计思想:要求出一个正负数组中的最大子数组的和,可以先找出其中的所有非负数,它们的和则是最终要求的数值。
      所以就要利用for循环生成一个随机数组,数值为-100到100之间的整数,然后用一个if语句判断随机数是否是非负数,如果是就   在sum的   值上加上这个数,最后得到的数组之和就是要找的值。
    2.源代码:
    #include <iostream>
    #include <time.h>
    using namespace std;
    
    void main()
    {
        int arr[200];
        int sum = 0;
        srand((unsigned)time(NULL));
        cout << "生成的数组为:"<< endl;
        for (int i = 0;i < 200; i++)
        {
            arr[i] = rand()%201-100;//生成一个随机数组
            cout << arr[i] << "   ";
            if (arr[i] >= 0)//找出所有非负数将其相加
            {
                sum = sum + arr[i];
                cout << arr[i];
            }
        }    
        cout << endl;
        cout << "该数组的子数组和的最大值为:" << sum << endl;
    }

    3.测试结果:

    4.项目计划总结表:

  • 相关阅读:
    取球问题
    汉字首字母
    上三角
    循环小数
    拓扑排序
    倒水
    equals方法使用技巧
    Java库中的集合
    win10安装Redis方法以及基本配置
    c、c++函数随机
  • 原文地址:https://www.cnblogs.com/mengxiangjialzh/p/4357343.html
Copyright © 2011-2022 走看看