C++70分,求调

P1443 马的遍历

\#4 \#8 TLE \#10 WA
by DL_Lingkong @ 2023-07-18 16:28:16


@[LingKong666](/user/892470) 你以为你把函数名写成 `bfs()` 他就是 BFS?这明明是 DFS!
by LittleAcbg @ 2023-07-18 16:31:18


@[LuoJingjia](/user/531709) 问题是为什么会TLE
by DL_Lingkong @ 2023-07-18 16:35:06


@[LuoJingjia](/user/531709) 还有WA
by DL_Lingkong @ 2023-07-18 16:35:27


@[LingKong666](/user/892470) 因为你用dfs写的
by bad_wza @ 2023-07-21 21:06:46


## 你看看这个 ``` #include<stdio.h> struct node{ int x; int y; int step; }; int book[405][405],flag[405][405],n,m; int main(){ int x0,y0,i,j; int next[8][2]={2,1,1,2,1,-2,2,-1,-1,2,-1,-2,-2,1,-2,-1}; struct node k[160005]; scanf("%d %d %d %d",&n,&m,&x0,&y0); for(i=1;i<=n;i++)for(j=1;j<=m;j++)flag[i][j]=-1; int tx,ty,tail=1,head=1; k[tail].x=x0; k[tail].y=y0; k[tail].step=0; book[x0][y0]=1; tail++; while(head<tail){ for(i=0;i<8;i++){ tx=k[head].x+next[i][0]; ty=k[head].y+next[i][1]; if(tx<=0||tx>n||ty<=0||ty>m)continue; if(book[tx][ty]==0){ book[tx][ty]=1; k[tail].x=tx; k[tail].y=ty; k[tail].step=k[head].step+1; flag[tx][ty]=k[tail].step; tail++; } } head++; } for(i=1;i<=n;i++){ for(j=1;j<=m;j++) if(i==x0&&j==y0)printf("0 "); else printf("%-5d",flag[i][j]); printf("\n"); } return 0; } ```
by __Sam__ @ 2023-11-20 20:45:37


|