洛谷 1508 Likecloud-吃、吃、吃

来源:互联网 发布:js移除disabled值传递 编辑:程序博客网 时间:2024/04/25 23:22

http://dev.luogu.org:3308/problem/show?pid=1508#sub
比较水的一个DP,初始位置在a[m][n/2+1]的下方,所以起点只能是a[m][n/2]或a[m][n/2+1]或a[m][n/2+2],转移方程比较显然是f[i][j]=max{f[i+1][j-1],f[i+1][j],f[i+1][j+1]}+a[i][j]就完事了。。。

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define INF 0x3f3f3fusing namespace std;int m,n,ans=-INF;int f[210][210],a[210][210];int main(){    scanf("%d%d",&m,&n);    for(int i=1;i<=m;i++)    {        for(int j=1;j<=n;j++)        {            scanf("%d",&a[i][j]);        }    }    memset(f,-INF,sizeof(f));    f[m][n/2]=a[m][n/2];    f[m][n/2+1]=a[m][n/2+1];    f[m][n/2+2]=a[m][n/2+2];    for(int i=m-1;i>=1;i--)    {        for(int j=1;j<=n;j++)        {            f[i][j]=max(f[i+1][j-1],f[i+1][j]);            f[i][j]=max(f[i][j],f[i+1][j+1])+a[i][j];        }    }    for(int i=1;i<=n;i++)    ans=max(ans,f[1][i]);    printf("%d",ans);    return 0;}
0 0