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;
}
浙公网安备 33010602011771号