56分求调

P2199 最后的迷宫

我是哈利波特,我怎么不知道我还干这事来着/yiw
by ytyuhuan @ 2023-07-25 11:27:20


讨论区惊现哈利波特
by Uvocde @ 2023-07-25 11:32:47


@[xiakexiaolong](/user/225797) 你既然是哈利波特,那可以帮我用魔法发现代码的错误吗?
by _wakeup @ 2023-07-25 11:34:24


@[xiakexiaolong](/user/225797) 还行,下一个
by Zjc20120331 @ 2023-07-25 11:43:51


应该行了 ``` #include<bits/stdc++.h> using namespace std; char a[2005][2005]; int bj[2005][2005]; struct node{ int x,y,setp; }q[10000005]; int n,m; int dx[9]={0,1,-1,0,0,1,-1,1,-1}; int dy[9]={0,0,0,1,-1,-1,1,1,-1}; void dfs(int x,int y,int i) { //朝第 i个方向移动一步 if(x<1||x>n||y<1||y>m||a[x][y]=='X') return ; bj[x+dx[i]][y+dy[i]]=2; dfs(x+dx[i],y+dy[i],i); } void bfs(int x,int y) { int h=1,t=1,nowx,nowy,setp; //起点入队 q[1].x=x; q[1].y=y; q[1].setp=0; while(h<=t) { nowx=q[h].x,nowy=q[h].y,setp=q[h].setp; for(int i=1;i<=4;i++) { int xx=nowx+dx[i]; int yy=nowy+dy[i]; if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='X'&&bj[xx][yy]!=1) { if(bj[xx][yy]==2) { cout<<setp+1<<endl; return; } bj[xx][yy]=1; node s; s.x=xx;s.y=yy;s.setp=setp+1; q[++t]=s; } } h++; } cout<<"Poor Harry"<<endl; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; while(1) { int tx,ty,sx,sy; cin>>tx>>ty>>sx>>sy; if(tx==0&&ty==0&&sx==0&&sy==0) break; memset(bj,0,sizeof(bj)); for(int i=1;i<=8;i++) dfs(tx,ty,i); bj[tx][ty]=2; if(bj[sx][sy]==2) { cout<<0<<endl; continue; } bj[sx][sy]=1; bfs(sx,sy); } return 0; } ```
by bei_awa @ 2023-07-25 11:47:32


@[_wakeup](/user/666741)
by bei_awa @ 2023-07-25 11:47:57


@[_wakeup](/user/666741) 能给我的B站点个关注吗 我的B站链接在我主页
by bei_awa @ 2023-07-25 11:49:58


@[bei_awa](/user/664284) 您这是又重写了一遍?%%%
by _wakeup @ 2023-07-25 11:50:21


@[bei_awa](/user/664284) 可以,给你两个
by _wakeup @ 2023-07-25 11:50:52


_wakeup 这题我做过
by bei_awa @ 2023-07-25 11:52:28


| 下一页