80#1求助,四维dp
查看原帖
80#1求助,四维dp
1156292
xxiao_99楼主2023/12/6 21:00
#include<bits/stdc++.h>
using namespace std;
int main(){
	int N,y,z,m;
	cin>>N;
	int a[N+2][N+2] = {0},x[N+2][N+2][N+2][N+2] = {0};
	for(int i = 0;;i++){
		cin>>m>>y>>z;
		a[m][y] = z;
		if(m == 0) break;
	}
	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++){
					x[i][j][k][l] = max(max(x[i-1][j][k-1][l],x[i-1][j][k][l-1]),max(x[i][j-1][k-1][l],x[i][j-1][k][l-1]))+a[i][j]+a[k][l];
					if(i == k&&j == l) x[i][j][k][l] -= a[i][j];
				}
			}
		}
	}
	cout<<x[N][N][N][N];
	return 0;
}
2023/12/6 21:00
加载中...