问一个问题
查看原帖
问一个问题
1361688
gold_boy_hetao楼主2025/8/2 23:42
#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));

算出来就不对呢? 什么时候该加,什么时候又不该加呢?

2025/8/2 23:42
加载中...