zoukankan      html  css  js  c++  java
  • hdu 1024 Max Sum Plus Plus

    dp方程为这个

    dp[i][j]=Max(dp[i][j-1]+a[j] , max( dp[i-1][k] ) + a[j] ) 0<k<j

    因为i有跟没有一样,故可以化为一维的,但是 max( dp[i-1][k] ) + a[j] ) 0<k<j 该怎样求呢!只有神知道

    具体跟最大联系和一样,不要问我怎么想到的,我不知道,我也是看了别人的菜知道的

    详细见http://www.cnblogs.com/kuangbin/archive/2011/08/04/2127085.html

    #include<iostream>
    #include<cstdio>
    using namespace std;
    
    const int maxn=1000001;
    const int inf=99999999;
    
    int dp[maxn],num[maxn],a[maxn];
    
    int main()
    {
        //freopen("in.txt","r",stdin);
        int n,m,mmaxx;
        while (scanf("%d%d",&m,&n)!=EOF)
        {
            for (int i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
                dp[i]=0;
                num[i]=0;
            }
            dp[0]=num[0]=0;
            for (int i=1;i<=m;i++)
            {
                mmaxx=-inf;
                for (int j=i;j<=n;j++)
                {
                    dp[j]=max(dp[j-1]+a[j],num[j-1]+a[j]);
                    num[j-1]=mmaxx;
                    mmaxx=max(dp[j],mmaxx);
                }
            }
            printf("%d
    ",mmaxx);
        }
        //fclose(stdin);
        return 0;
    }
    至少做到我努力了
  • 相关阅读:
    【leetcode】1030. Matrix Cells in Distance Order
    【leetcode】1031. Maximum Sum of Two Non-Overlapping Subarrays
    【leetcode】1032. Stream of Characters
    L120 单词造句
    L119
    L118
    2018.8.6邮件规范一
    L117
    L116
    L115
  • 原文地址:https://www.cnblogs.com/chensunrise/p/3685945.html
Copyright © 2011-2022 走看看