社区讨论

完了我连sb题都做不出来了

P1443马的遍历参与者 6已保存回复 15

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
15 条
当前快照
1 份
快照标识符
@mi7yyzzi
此快照首次捕获于
2025/11/21 05:54
4 个月前
此快照最后确认于
2025/11/21 06:46
4 个月前
查看原帖
啊我太弱了嘤嘤嘤
CPP
#include<cstdio>
#include<iomanip>
#include<queue>
#include<cstring>
using std::memset;
using std::queue;
int n,m;
bool c[1001][1001];
int ans[1001][1001];
int dx[8]={-2,-1,1,2,2,1,-1,-2};
int dy[8]={-1,-2,-2,-1,1,2,2,1};
queue<int>hori;
queue<int>para;
int ccnt=-1;
void bfs(int x,int y){
    ccnt++;
    ans[x][y]=ccnt;
    c[x][y]=false;
    for(int i=1;i<=8;i++){
        for(int j=1;i<=8;j++){
            int ax=x+dx[i];
            int ay=y+dy[j];
            if(ax>=1&&ax<=n&&ay>=1&&ay<=m&&c[ax][ay]!=false){
                hori.push(ax);
                para.push(ay);
            }
        }
    }
    if(para.size()!=0){
        int cx=hori.front();
        int cy=para.front();
        hori.pop();para.pop();
        bfs(cx,cy);
    }
}
int main(){
    memset(c,true,sizeof(c));
    memset(ans,-1,sizeof(ans));
    scanf("%d%d",&n,&m);
    int x,y;
    scanf("%d%d",&x,&y);
    bfs(x,y);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            printf("%d ",ans[i][j]);
        }
        printf("\n");
    }
    return 0;
}

回复

15 条回复,欢迎继续交流。

正在加载回复...