40分求调
查看原帖
40分求调
977431
maoyuqi楼主2023/12/30 08:23

本人为动规新手,请各位大佬多多指教

#include<iostream>
using namespace std;
const int N = 2000;
int map[10][10];
int a,b,c;
int n,dp[20][20][20][20];
int main()
{
	cin>>n;
	
	while(1)
	{
		cin>>a>>b>>c;
		if(a==0&&b==0&&c==0)
		{
			break;
		} 
		else
		{
			map[a][b]=c;
		}
	}
	dp[0][0][0][0]=map[0][0];
	for(int i = 1;i<=n;i++)
	{
		for(int j = 1;j<=n;j++)
		{
			for(int x=1;x<=n;x++)
			{
				for(int y = 1;y<=n;y++)
				{
					if(i!=1&&x!=1) dp[i][j][x][y]=max(dp[i][j][x][y],dp[i-1][j][x-1][y]+map[i][j]+map[x][y]-map[i][j]*(i==x&&j==y));
					if(i!=1&&y!=1) dp[i][j][x][y]=max(dp[i][j][x][y],dp[i-1][j][x][y-1]+map[i][j]+map[x][y]-map[i][j]*(i==x&&j==y));
					if(j!=1&&x!=1) dp[i][j][x][y]=max(dp[i][j][x][y],dp[i][j-1][x-1][y]+map[i][j]+map[x][y]-map[i][j]*(i==x&&j==y));
					if(j!=1&&y!=1) dp[i][j][x][y]=max(dp[i][j][x][y],dp[i][j-1][x][y-1]+map[i][j]+map[x][y]-map[i][j]*(i==x&&j==y));
				}
			}
		}
	}
	cout<<dp[n][n][n][n];
	return 0;
}
2023/12/30 08:23
加载中...