AcWing 1027. 方格取数
原题链接
简单
作者:
万年老二
,
2024-04-22 14:41:20
,
所有人可见
,
阅读 2
偷懒写法
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N=15;
int g[N][N];
int f[2*N][N][N];
int main() {
int n;
cin >> n;
int a, b, c;
while(cin>>a>>b>>c,a||b||c)g[a][b]=c;
for(int k=2; k <= 2*n; k++) {
for(int i1=1; i1 <=n; i1++) {
for(int i2=1; i2<=n; i2++) {
int j1=k-i1,j2=k-i2;
if(j1>=1&&j1<=n&&j2>=1&&j2<=n) {
int& x=f[k][i1][i2];
int t=g[i1][j1];
if(i1 != i2)t+=g[i2][j2];
int a=10,b=6;
for(int i=0; i<4; i++){
x=max(x,f[k-1][i1-(a>>i&1)][i2-(b>>i&1)]+t);
}
}
}
}
}
cout << f[2*n][n][n] << endl;
return 0;
}