zoukankan      html  css  js  c++  java
  • 返回一个数组 最大子数组的和

    要求:

    要求程序必须能处理1000 个元素;

    每个元素是int32 类型的,出现子数组之和大于整型表示的最大范围会出现什么情况;

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

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

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

    思路:

    既然老师让这个程序能够处理1000个数,我们不妨用随机数srand函数随机生成

    1000个随机数,考虑到有负数的存在,我们为数组加入负数,然后通过一个for循环

    来将得到的和数赋值给MAX。最后判断MAX与各个元素的大小,如果MAX小于某个元素,则把这个值赋值给MAX。

    遇到的问题:

    因为没有学习过C++,很多程序语句不会写,借鉴了同学的代码。编程思路很乱。

    #include <iostream>
    #include<stdlib.h>
    #include<time.h>
    using namespace std;


    int main()
    {
    int i;
    int a[1000];
    int max = 0;
    int b = 0;

    srand(time(NULL));
    cout<<"数组为:"<<endl;
    for (i = 0; i<1000; i++)
    {
    a[i] = rand()%2001-1000;
    }
    for (i = 0; i<1000; i++)
    {
    cout << a[i] << ' ';
    }
    cout << endl;

    for (i = 0; i < 1000; i++)
    {
    b += a[i];
    if (b < 0)
    b = 0;
    if (b > max)
    max = b;
    }
    if (max == 0)
    {
    max = a[0];
    for (i = 0; i < 1000; i++)
    {
    if (max < a[i])
    {
    max = a[i];
    }

    }
    cout <<"最大子数组和为:"<< max << endl;
    system("pause");
    return 0;
    }

    运行结果:

    帅照:

  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/w-t-c/p/9787098.html
Copyright © 2011-2022 走看看