蒟蒻80分求助

P1004 [NOIP2000 提高组] 方格取数

```cpp #include <iostream> using namespace std; const int N=13; int f[N][N][N][N],a[N][N]; int n,m; int cal(int a,int b,int c,int d) { return ((((a>b)?a:b)>c?((a>b)?a:b):c)>d)?(((a>b)?a:b)>c?((a>b)?a:b):c):d; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n; cin>>n; while(true) { int u,v,w; cin>>u>>v>>w; if(u+v+w==0) break; a[u][v]=w; } for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) for (int k=1;k<=n;++k) for (int x=j+1;x<=n;++x) f[i][j][k][x]=cal(f[i][j-1][k-1][x],f[i-1][j][k][x-1],f[i][j-1][k][x-1],f[i-1][j][k-1][x])+a[i][j]+a[k][x]; cout << f[n][n-1][n-1][n] << endl; return 0; } ``` 现在40pts了
by abensyl @ 2022-07-31 10:20:06


```cpp #include <iostream> using namespace std; const int N=13; int f[N][N][N][N],a[N][N]; int n,m; int cal(int a,int b,int c,int d) { return ((((a>b)?a:b)>c?((a>b)?a:b):c)>d)?(((a>b)?a:b)>c?((a>b)?a:b):c):d; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n; cin>>n; while(true) { int u,v,w; cin>>u>>v>>w; if(u+v+w==0) break; a[u][v]=w; } 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) { f[i][j][k][l]=cal(f[i-1][j][k-1][l],f[i-1][j][k][l-1],f[i][j-1][k-1][l],f[i][j-1][k][l-1])+a[i][j]+a[k][l]; if(i==k&&l==j) f[i][j][k][l]-=a[i][j]; } cout << f[n][n][n][n] << endl; return 0; } ``` # 现在过了!
by abensyl @ 2022-07-31 10:27:40


这题是用贪心算法吗?结果是多少啊
by AresXun @ 2022-08-15 20:06:43


|