zoukankan      html  css  js  c++  java
  • 题目:返回一个整数数组中最大子数组的和。

    要求: 要求程序必须能处理1000 个元素; 每个元素是int32 类型的; 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。

    #include <iostream>
    using namespace std;
    #define N 1000

    void main(){
    int b[N+1];
    int max[N] ,max1,n;
    int j,k,a,i,g;
    max[2000] = 0;max1 = 0;
    cout<<"随机生成1000个数:"<<endl;
    for(j = 0;j<N;j++) {
    a = rand()%2;
    if(a == 0) b[j] = 0-rand()%1000;
    if(a == 1) b[j] = rand()%1000;
    cout<<b[j]<<" ";
    }

    for(j = 0;j < N;j++){
    a = 0;
    for(k = j;k < N;k++){
    a+= b[k] ;
    if(a>max[j]){
    max[j] = a;
    n = k;
    }
    }
    if(max[j]>max1){
    max1 = max[j];
    i = j;

    }
    cout<<endl;
    cout<<"连续数组为: "<<endl; 
    for(g = i;g < n+1;g++)
    cout<<b[g]<<" "; 
    cout<<endl;
    cout<<"连续数组最大的和为"<<max1<<endl;
    }

    经过改善始终不能把o(n2)改成0(n)不过我后续会在进行改善



  • 相关阅读:
    SpringSecurity开发
    SpringBoot 集成Spring Security
    Hexo
    gitbook使用
    Maze
    Party
    A. DZY Loves Chessboard
    1042B. Vitamins
    Petr and a Combination Lock
    433B.Kuriyama Mirai's Stones
  • 原文地址:https://www.cnblogs.com/laozhanghahaha/p/4387408.html
Copyright © 2011-2022 走看看