#include <bits/stdc++.h>
using namespace std;
int n;
int x,y,num;
int a[15][15];
int dp[15][15][15][15];
int main()
{
cin >> n;
while (true)
{
cin >> x;
if (!x)
break;
cin >> y >> num;
a[x][y] = num;
}
//memset(dp,-0x3f,sizeof(dp));
dp[1][1][1][1] = a[1][1];
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= n;j++)
{
for (int k = 1;k <= n;k++)
{
for (int l = 1;l <= n;l++)
{
dp[i][j][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])) + a[i][j] + a[k][l];
if (i == k && j == l)
dp[i][j][k][l] -= a[i][j];
}
}
}
}
cout << dp[n][n][n][n];
return 0;
}
为什么我加上18行的
memset(dp,-0x3f,sizeof(dp));
算出来就不对呢? 什么时候该加,什么时候又不该加呢?