zoukankan      html  css  js  c++  java
  • 洛谷

    略有收获的bfs,使用了try_enqueue函数使得加入队列非常方便。性能理论上是一样的因为是inline?

    还有就是左对齐是使用%-4d,相对于右对齐的%4d,还有右对齐前导零的%04d,自己试一下呗。

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    
    int n,m,sx,sy;
    
    int ans[405][405];
    
    struct QueueNode{
        int x,y,t;
        QueueNode(int x=0,int y=0,int t=0):x(x),y(y),t(t){}
    };
    
    queue<QueueNode> q;
    inline void try_enqueue(int x,int y,int t){
        if(x>=1&&x<=n&&y>=1&&y<=m&&ans[x][y]==-1){
            ans[x][y]=t+1;
            q.push(QueueNode(x,y,t+1));
        }
    }
    
    void bfs(){
        try_enqueue(sx,sy,-1);
        while(!q.empty()){
            QueueNode cur=q.front();
            q.pop();
    
            int x=cur.x;
            int y=cur.y;
            int t=cur.t;
    
            try_enqueue(x-1,y-2,t);
            try_enqueue(x-2,y-1,t);
            try_enqueue(x-2,y+1,t);
            try_enqueue(x-1,y+2,t);
            try_enqueue(x+1,y+2,t);
            try_enqueue(x+2,y+1,t);
            try_enqueue(x+2,y-1,t);
            try_enqueue(x+1,y-2,t);
        }
    }
    
    
    int main(){
        scanf("%d%d%d%d",&n,&m,&sx,&sy);
        memset(ans,-1,sizeof(ans));
    
        bfs();
    
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                printf("%-4d%c",ans[i][j]," 
    "[j==m]);
            }
        }
    }
  • 相关阅读:
    lnmp环境搭建
    ffmpeg基础使用
    mongodb 副本集搭建
    二 利用pandas统计中国百亿富豪的信息
    1 mongodb安装及启动
    2 mongodb设置密码登录和创建库
    一 pandas读取excle数据
    rancher的使用
    redis主从配置
    redis安装和配置
  • 原文地址:https://www.cnblogs.com/Yinku/p/10658682.html
Copyright © 2011-2022 走看看