#2WA四维dp
查看原帖
#2WA四维dp
393811
大海中的孤帆楼主2023/8/4 15:49
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n;
int f[15][15];
int w[11][11][11][11];
//w[a1][b1][a2][b2]=max(w[a1-1][b1][a2-1][b2],w[a1-1][b1][a2][b2-1],w[a1][b1-1][a2-1][b2],w[a1][b1-1][a2][b2-1])
//动态转移方程
int q(int a,int b)
{
	if(a>b)
		return a;
	return b;
}
//w[1][1][1][1]==0
//a1,b1,a2,b2>=1
int dg(int a1,int b1,int a2,int b2)
{
	int all=0;
	if(a1==0||b1==0||a2==0||b2==0)
		return 0;
	if(a1==a2&&b1==b2)
	{
		all+=f[a1][b1];
	}
	else
	{
		all+=f[a1][b1];
		all+=f[a2][b2];
	}
	w[a1][b1][a2][b2]=q(q(dg(a1-1,b1,a2-1,b2),dg(a1-1,b1,a2,b2-1)),q(dg(a1,b1-1,a2-1,b2),dg(a1,b1-1,a2,b2-1)))+all;
	return w[a1][b1][a2][b2];
}
int main()
{
	cin>>n;
	while(1)
	{
		int x,y,z;
		cin>>x>>y>>z;
		f[x][y]=z;
		if(x==0&&y==0&&z==0)
			break;
	}
	cout<<dg(n,n,n,n);
	return 0;
}
2023/8/4 15:49
加载中...