poj 2948

dp水题

代码:

#include<iostream>
#include<fstream>

using namespace std;

int dp[501][501];
int a[501][501];
int b[501][501];

int n,m;

void read(){
//	ifstream cin("in.txt");
	int i,j,k;
	while(cin>>n>>m){
		if(n==0) return;
		for(i=1;i<=n;i++)
			for(j=1;j<=m;j++)
				scanf("%d",&a[i][j]);
		for(i=1;i<=n;i++)
			for(j=1;j<=m;j++)
				scanf("%d",&b[i][j]);
		for(i=1;i<=n;i++)
			for(j=1;j<=m;j++)
				b[i][j]+=b[i-1][j];
		for(j=1;j<=m;j++)
			for(i=1;i<=n;i++)
				a[i][j]+=a[i][j-1];
		for(i=1;i<=n;i++)
			for(j=1;j<=m;j++)
			{
				dp[i][j]=max(dp[i-1][j]+a[i][j],dp[i][j-1]+b[i][j]);
			}
		cout<<dp[n][m]<<endl;
		
	}
}

int main(){
	read();
	return 0;
}

posted on 2011-05-07 15:01  宇宙吾心  阅读(304)  评论(0)    收藏  举报

导航