求助
查看原帖
求助
739214
dmx7u19x楼主2023/10/1 16:09
#include<bits/stdc++.h>
using namespace std;

int n;
int dp[20][20][20][20];
int a[20][20];

int main()
{
	cin>>n;
	
	while(true)
	{
		int x, y,z;
		cin>>x>>y>>z;
		if(x==0&&y==0&&z==0)break; 
		a[x][y]=z;
	}
	
	
	
	for(int x1=1;x1<=n;x1++)
	{
		for(int y1=1;y1<=n;y1++)
		{
			for(int x2=1;x2<=n;x2++)
			{
				for(int y2=1;y2<=n;y2++)
				{
					dp[x1][y1][x2][y2]=max(dp[x1-1][y1][x2-1][y2],dp[x1][y1-1][x2][y2-1]);
					dp[x1][y1][x2][y2]=max(dp[x1-1][y1][x2][y2-1],dp[x1][y1-1][x2-1][y2]);
					dp[x1][y1][x2][y2]=dp[x1][y1][x2][y2]+a[x1][y1]+a[x2][y2];
					if(x1==x2&&y1==y2)dp[x1][y1][x2][y2]-=a[x2][y2];
				}
			}
		}
	}
	cout<<dp[n][n][n][n];
	return 0;
}

2023/10/1 16:09
加载中...