RE 0分求助

P1004 [NOIP2000 提高组] 方格取数

@[zhangyanhao](/user/490972) 你freopen("D:\\vscode\\p1004\\p1004.in", "r", stdin); 都不注释掉怎么会过
by 大海中的孤帆 @ 2023-08-04 15:52:44


``` cpp #include <iostream> using namespace std; int map[10][10], ans[10][10][10][10]; int n; void dfs(int x1, int y1, int x2, int y2) { int m=0; //1向下走,2向下走(x1+1,y1) (x2+1,y2) if (x1+1!=x2+1 and y1!=y2) { if (x1+1<=n and x2+1<=n) { if (ans[x1+1][y1][x2+1][y2]==-1) dfs(x1+1, y1, x2+1, y2); m=max(m, ans[x1+1][y1][x2+1][y2]); } } //1向下走,2向右走 (x1+1)(y1) (x2)(y2+1) if (x1+1<=n and y2+1<=n) { if (x1+1==n and y1==n and x2==n and y2+1==n) { ans[x1][y1][x2][y2]=map[x1][y1]+map[x2][y2]+map[n][n]; return; } else if (x1+1!=x2 and y1!=y2+1) { if (ans[x1+1][y1][x2][y2+1]==-1) { dfs(x1+1, y1, x2, y2+1); m=max(m, ans[x1+1][y1][x2][y2+1]); } } } //1向右走,2向下走 (x1)(y1+1) (x2+1)(y2) if (x1!=x2+1 and y1+1!=y2) { if (y1+1<=n and x2+1<=n) { if (ans[x1][y1+1][x2+1][y2]==-1) dfs(x1, y1+1, x2+1, y2); m=max(m, ans[x1][y1+1][x2+1][y2]); } } //1向右走,2向右走 if (x1!=x2 and y1+1!=y2+1) { if (y1+1<=n and y2+1<=n) { if (ans[x1][y1+1][x2][y2+1]==-1) dfs(x1, y1+1, x2, y2+1); m=max(m, ans[x1][y1+1][x2][y2+1]); } } ans[x1][y1][x2][y2]=m+map[x1][y1]+map[x2][y2]; //记录本次的最优解 } int main() { freopen("p1004.in", "r", stdin); //清除map for (int i=1; i<=n; ++i) for (int j=1; j<=n; ++j) map[i][j]=0; cin>>n; while (true) { int x, y, num; cin>>x>>y>>num; if (x==0 and y==0 and num==0) break; map[x][y]=num; } //清零ans 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) ans[i][j][k][l]=-1; // dfs(1, 1, 1, 1); cout<<ans[1][1][1][1]-map[1][1]; return 0; } ``` 我改了freopen,还是RE呀
by zhangyanhao @ 2023-08-04 18:57:16


哦对不起,好像要把freopen屏蔽掉,理解了,谢谢解答
by zhangyanhao @ 2023-08-04 21:32:42


@[zhangyanhao](/user/490972) 要吧freopen注释
by dy182312 @ 2023-09-05 21:04:01


|