40分,WA求助

P1605 迷宫

把 b[x][y]=0; 写在 search 的 for 循环的外面
by luoyukai @ 2024-01-26 17:29:37


@[luoyukai](/user/1200412) 我之前是那么写的,但是有6个测试点一直不过
by JXnd2021 @ 2024-01-26 17:41:06


等一下,我找一下之前的代码
by luoyukai @ 2024-01-26 17:43:12


满分代码 ```cpp #include<bits/stdc++.h> long long n,m,i,j,k,t,qx,qy,zx,zy,ax,ay,ans; long long a[10][10]; long long fx[4][2]={0,1,1,0,0,-1,-1,0}; void search(long long x,long long y) { if(x==zx&&y==zy) { ans++; return; } for(int i=0;i<4;i++) { long long xx=x+fx[i][0]; long long yy=y+fx[i][1]; if(a[xx][yy]==0) { a[xx][yy]=1; search(xx,yy); a[xx][yy]=0; } } } int main(){ std::cin>>n>>m>>t>>qx>>qy>>zx>>zy; for(i=1;i<=t;i++) { std::cin>>ax>>ay; a[ax][ay]=1; } for(i=0;i<=m+1;i++) { a[0][i]=a[n+1][i]=1; } for(i=0;i<=n+1;i++) { a[i][0]=a[i][m+1]=1; } a[qx][qy]=1; search(qx,qy); std::cout<<ans; return 0; } ``````
by luoyukai @ 2024-01-26 17:46:21


tx>=1&&ty>=1&&tx<=n&&ty<=m 这4个条件多了一个等于号
by luoyukai @ 2024-01-26 17:49:00


等于号是应该要有的,不然边界就不对了
by JXnd2021 @ 2024-01-26 17:55:26


AC ```c #include<iostream> using namespace std; int n, m, t, sx, sy, fx, fy; int vis[10][10]; //标记 int mp[10][10]; //障碍物位置 int ans = 0; int xx[] = { 1,0,-1,0 }; int yy[] = { 0,-1,0,1 }; void dfs(int x, int y) { if (x == fx && y == fy) { ans++; return; } for (int i = 0; i < 4; i++) { int dx = xx[i] + x; int dy = yy[i] + y; if (dx >= 1 && dx <= n && dy >= 1 && dy <= m && vis[dx][dy]==0 && mp[dx][dy]==0) { vis[dx][dy] = 1; dfs(dx, dy); vis[dx][dy] = 0; } } } int main() { cin >> n >> m >> t >> sx >> sy >> fx >> fy; while (t--) { int a, b; cin >> a >> b; mp[a][b] = 1; } vis[sx][sy] = 1; dfs(sx, sy); cout << ans << endl; return 0; } ```
by timmyliao @ 2024-01-26 17:55:28


感谢各位大佬,AC了,我加了一个b[sx][sy]=1;就对了
by JXnd2021 @ 2024-01-26 18:01:20


|