求助!!!
查看原帖
求助!!!
741732
small_Dongpo楼主2023/9/12 21:38

帮帮蒟蒻QAQ

#include <iostream>
#include <algorithm>
using namespace std;

typedef long long l;
l dp[10][10][10][10], a[10][10], n, x, y, num;

l f(l x1, l y1, l x2, l y2)
{
    if (x1 < 1 || x2 < 1 || y1 < 1 || y2 < 1 || x1 > n || x2 > n || y1 > n || y2 > 1) return 0;
    if (dp[x1][y1][x2][y2] > 0) return dp[x1][y1][x2][y2];
    dp[x1][y1][x2][y2] = max(max(f(x1 - 1, y1, x2 - 1, y2), f(x1 - 1, y1, x2, y2 - 1)), max(f(x1, y1 - 1, x2 - 1, y2), f(x1, y1 - 1, x2, y2 - 1))) + a[x1][y1] + a[x2][y2];
    return dp[x1][y1][x2][y2];
}

int main()
{
    for (l i = 1; i <= n; ++i)
    {
        for (l j = 1; j <= n; ++j)
        {
            a[i][j] = 0;
            for (l k = 1; k <= n; ++k)
            {
                for (l ll = 1; ll <= n; ++ll)
                {
                    dp[i][j][k][ll] = 0;
                }
            }
        }
    }
    scanf("%lld", &n);
    while (scanf("%lld %lld %lld", &x, &y, &num) > 0)
    {
        if (x == 0) break;
        a[x][y] = num;
    }
    dp[1][1][1][1] = a[1][1];
    printf("%lld", f(n, n, n, n));
    return 0;
}

悬赏关注 验证码:maxt祭

2023/9/12 21:38
加载中...