帮帮蒟蒻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祭