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; }

浙公网安备 33010602011771号