首页 > 其他 > 详细

合肥工业大学oj p1012

时间:2018-10-21 15:56:06      阅读:133      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <cstring>
#define maxn 5 + 2
using namespace std;

int m, n, G[maxn][maxn], dp[maxn][maxn][maxn][maxn];

int main()
{
    while (cin >> m >> n && m && n)
    {
        memset(G, 0, sizeof(G));
        memset(dp, 0, sizeof(dp));
        for (int i = 1; i <= m; ++i)
            for (int j = 1; j <= n; ++j)
                cin >> G[i][j];

        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= m; ++j)
                for (int k = 1; k <= n; ++k)
                {
                    int l = i + j - k;
                    if (l >= 1)
                        dp[i][j][k][l] = G[i][j] + G[k][l] + max(max(dp[i - 1][j][k - 1][l], dp[i - 1][j][k][l - 1]), max(dp[i][j - 1][k - 1][l], dp[i][j - 1][k][l - 1]));
                    else continue;

                    if(i == k && j == l)
                        dp[i][j][k][l] -= G[i][j];
                }

        cout << dp[n][m][n][m] << endl;
    }

    return 0;
}

 

合肥工业大学oj p1012

原文:https://www.cnblogs.com/zousantuier/p/9825167.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!