P2380 狗哥采矿

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 const int maxn=1010;
 5 using namespace std;
 6 int n,m;
 7 int dp[maxn][maxn];
 8 int a[maxn][maxn];
 9 int b[maxn][maxn];
10 int sum1[maxn][maxn];
11 int sum2[maxn][maxn];
12 int main()
13 {
14     cin>>n>>m;
15     while(m!=0||n!=0)
16     {
17         memset(a,0,sizeof(a));
18         memset(b,0,sizeof(b));
19         memset(sum1,0,sizeof(sum1));
20         memset(sum2,0,sizeof(sum2));
21         memset(dp,0,sizeof(dp));
22         for(int i=1;i<=n;i++)
23         {
24             for(int j=1;j<=m;j++)
25             {
26                 cin>>b[i][j];
27                 sum1[i][j]=sum1[i][j-1]+b[i][j];
28             }
29         }
30         for(int i=1;i<=n;i++)
31         {
32             for(int j=1;j<=m;j++)
33             {
34                 cin>>a[i][j];
35                 sum2[i][j]=sum2[i-1][j]+a[i][j];
36             }
37         }
38         for(int i=n;i>=0;i--)
39         {
40             for(int j=m;j>=0;j--)
41             {
42                     dp[i][j]=max(dp[i][j+1]+sum2[i][j+1],dp[i+1][j]+sum1[i+1][j]);
43             }
44         }
45         cout<<dp[0][0]<<endl;
46         cin>>n>>m;
47     }
48     return 0;
49  } 

猜你喜欢

转载自www.cnblogs.com/2529102757ab/p/11220138.html
今日推荐