poj 1157(dp)

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    int i,j,k,f,v,t,a[100][100],dp[100][100];
    scanf("%d%d",&f,&v);
    for(i=1;i<=f;i++){
        for(j=1;j<=v;j++){
            scanf("%d",&a[i][j]);
        }
    }
    memset(dp,0,sizeof dp);
    dp[1][1] = a[1][1];
    for(j=2;j<=v-f+1;j++){
        dp[1][j] = max(dp[1][j-1],a[1][j]);
    }
    for(i=2;i<=f;i++){
        for(j=i;j<=v-f+i;j++){
            if(j==i)dp[i][j] = dp[i-1][j-1]+a[i][j];
            else dp[i][j] = max(dp[i][j-1],dp[i-1][j-1]+a[i][j]);
        }
    }
    cout<<dp[f][v]<<endl;
    return 0;
}

 

posted @ 2021-08-13 20:06  智人心  阅读(24)  评论(0)    收藏  举报