AcWing 四维数组通俗易懂. 方格取数
原题链接
简单
作者:
新.一
,
2021-06-03 12:15:20
,
所有人可见
,
阅读 339
#include<iostream>
#include<cstring>
using namespace std;
const int N=15;
int s[N][N];
int f[N][N][N][N];
//f[i1,j1,i2,j2]
int main()
{
int n;
cin>>n;
int a,b,c;
while(cin>>a>>b>>c,a||b||c) s[a][b]=c;
for(int i1=1;i1<=n;i1++)
for(int j1=1;j1<=n;j1++)
for(int i2=1;i2<=n;i2++)
for(int j2=1;j2<=n;j2++)
{
int t=s[i1][j1];
if(!(i1==i2&&j1==j2))
t+=s[i2][j2];
int &x=f[i1][j1][i2][j2];
x=max(x,f[i1-1][j1][i2-1][j2]+t);
x=max(x,f[i1-1][j1][i2][j2-1]+t);
x=max(x,f[i1][j1-1][i2-1][j2]+t);
x=max(x,f[i1][j1-1][i2][j2-1]+t);
}
cout<<f[n][n][n][n]<<endl;
}