状态转移方程:dp[i][j]=max{dp[i-1][k]}(i-1<=k<=j-1)+a[i][j]
代码:
#include<stdio.h>
int F,V;
int a[100][100];
int dp[100][100];
int main()
{
scanf("%d%d",&F,&V);
for (int i=0; i<F; i++)
for (int j=0; j<V; j++)
scanf("%d",a[i]+j);
for (int i=0; i<V; i++) //处理边界
dp[0][i]=a[0][i];
for (int i=1; i<F; i++)
for (int j=i; j<V; j++) {
int max=-100000000;
for (int k=i-1; k<j; k++)
if(dp[i-1][k]>max) max=dp[i-1][k];
dp[i][j]=max+a[i][j];
}
int max=-100000000;
for (int j=F-1; j<V; j++)
if (dp[F-1][j]>max)
max=dp[F-1][j];
printf("%d\n",max);
}
浙公网安备 33010602011771号