社区讨论
为啥会TLE呢?
P1443马的遍历参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mj034djm
- 此快照首次捕获于
- 2025/12/10 22:08 3 个月前
- 此快照最后确认于
- 2025/12/13 14:20 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,x,y;
cin>>n>>m>>x>>y;
int a[405][405];
int dir[8][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,1},{-1,2}};
bool maze[405][405]={false};
int q[n*m][3];
int front,rear;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
a[i][j]=-1;
maze[i][j]=false;
}
}
front=rear=1;
q[0][0]=x;
q[0][1]=y;
q[0][2]=0;
maze[1][1]=true;
rear++;
while(front<=rear){
int x=q[front][0];
int y=q[front][1];
int step=q[front][2];
for (int i = 0; i < 8; i++)
{
int sx=x+dir[i][0];
int sy=y+dir[i][1];
if(sx>=1&&sx<=n&&sy>=1&&sy<=m&&!maze[sx][sy]){
maze[sx][sy]=true;
a[sx][sy]=step+1;
q[rear][0]=sx;
q[rear][1]=sy;
q[rear][2]=step+1;
rear++;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...