zoukankan      html  css  js  c++  java
  • 最大子数组和

    一看到这个问题第一反应就是最最普通的三个for循环三层遍历,求出数组中每一个子数组的和,最终求出这些子数组的最大的一个值。
    记Sum[i, …, j]为数组A中第i个元素到第j个元素的和(其中0 <= i <= j < n),遍历所有可能的Sum[i, …, j],那么时间复杂度为O(N^3)

    但是老师和同学介绍使用动态规划,恍然大悟

    github不知为什么安不上代码贴出求助教协助~

    #include<stdio.h>
    int main()
    {
    int sum=-10000,a[1000],s[1000],i=0,j=0,k=0,n;
    char x;
    while(1)
    {
    scanf("%d%c",&a[i++],&x);
    if(x==' ')break;
    }
    n=i;
    s[0]=a[0];
    for(i=1;i<n;i++)
    {
    if(s[i-1]>0)
    {
    s[i]=s[i-1]+a[i];
    k=i;
    }
    else{
    s[i]=a[i];
    j=i;
    k=i;
    }
    }
    for(i=0;i<n;i++)
    if(sum<s[i])sum=s[i];
    printf("sum=%d ",sum);
    return 0;
    }

  • 相关阅读:
    一位年轻女董事长的忠告:不想穷下去就请看
    Ajax拓展02
    Ajax拓展
    Ajax概念及基础
    PHP了解01
    CSS3新增功能03
    CSS3新增功能02
    CSS3新增功能01
    html5介绍
    jQuery学习03
  • 原文地址:https://www.cnblogs.com/fireyjy/p/3330305.html
Copyright © 2011-2022 走看看