RE求助

P1443 马的遍历

# 看你还没有A了这题,那我就来帮你 ## 你这个方法要存很大,所以N开20005就能AC ## 但你肯定想学更好的方法,下面是我的代码,简单易懂,可以参考一下qwq ```cpp #include <bits/stdc++.h> #define ll long long using namespace std; struct node{ ll x,y; }; ll n,m,x,y; ll dxy[8][2]={{1,2},{1,-2},{2,1},{2,-1},{-1,2},{-1,-2},{-2,1},{-2,-1}}; ll ans[405][405]; queue<node> q; int main() { cin>>n>>m>>x>>y; memset(ans,-1,sizeof ans); ans[x][y]=0; q.push({x,y}); while(!q.empty()){ node t=q.front(); for(int i=0;i<8;i++){ ll nwx=t.x+dxy[i][0],nwy=t.y+dxy[i][1]; if(ans[nwx][nwy]!=-1||nwx<1||nwx>n||nwy<1||nwy>m) continue; q.push({nwx,nwy}); ans[nwx][nwy]=ans[t.x][t.y]+1; } q.pop(); } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cout<<ans[i][j]<<" "; cout<<endl; } return 0; } ``` 上次刷这题我还发帖问了别人,这次是我来回答了,那个帮我的人也AFO了
by zyh0516_lucky @ 2023-10-08 20:49:26


另外:正常的广搜要有vis数组判断(nwx,nwy)有无被访问过,但这题初值都为-1,所以可以不开vis数组
by zyh0516_lucky @ 2023-10-08 20:51:27


@[2022zhangyuanhao](/user/746930) 谢谢
by woshishadanda @ 2023-10-13 18:57:24


@[woshishadanda](/user/852112) 不谢
by zyh0516_lucky @ 2023-10-13 19:08:13


|