• hdu 2845(dp基础题)


    题意:容易理解。

    分析:以后碰到这种类型的题,就要考虑把矩阵先按行来处理,再按列处理。先算出每行能够能够得到的最大值,然后按列处理即可。

    代码实现:

    #include<stdio.h>
    #include<string.h>
    int n,m;
    int a[200005],dp[200005][2],b[200005];
    int max(int x,int y)
    {
        return x>y?x:y;
    }
    int main()
    {
        int i,j,res;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            res=-1000000;
            dp[0][0]=0;dp[0][1]=0;
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    scanf("%d",&a[j]);
                    dp[j][0]=max(dp[j-1][0],dp[j-1][1]);
                    dp[j][1]=dp[j-1][0]+a[j];   
                }
                b[i]=max(dp[m][0],dp[m][1]);
                if(res<b[i])
                        res=b[i];
            }
            dp[0][0]=0;dp[0][1]=0;
            for(i=1;i<=n;i++)
            {
                dp[i][0]=max(dp[i-1][0],dp[i-1][1]);
                dp[i][1]=dp[i-1][0]+b[i];
                if(res<dp[i][0])
                    res=dp[i][0];
                if(res<dp[i][1])
                    res=dp[i][1];
            }
            printf("%d
    ",res);
        }
        return 0;
    }
  • 相关阅读:
    Scala-文件操作
    python-数字
    python-访问模型
    scala-包
    Scala对象
    Scala-类
    sql存储过程
    sql视图
    sql基本语句
    sql中级语句
  • 原文地址:https://www.cnblogs.com/jiangjing/p/3221462.html
Copyright © 2020-2023  润新知