社区讨论

为啥会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 条回复,欢迎继续交流。

正在加载回复...