POJ 1157 LITTLE SHOP OF FLOWERS(坐标类DP)

状态转移方程: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);
}
posted on 2011-07-08 01:10  Eucalyptus  阅读(175)  评论(0编辑  收藏  举报