博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 - P1443 - 马的遍历 - bfs
阅读量:5049 次
发布时间:2019-06-12

本文共 1150 字,大约阅读时间需要 3 分钟。

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

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

#include
using namespace std;#define ll long longint 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
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]," \n"[j==m]); } }}

 

转载于:https://www.cnblogs.com/Yinku/p/10658682.html

你可能感兴趣的文章
一.go语言 struct json相互转换
查看>>
什么是架构设计
查看>>
程序员学习能力提升三要素
查看>>
PHP 微信错误状态返回码说明
查看>>
【4.1】Python中的序列分类
查看>>
ubuntu 移动文件
查看>>
Easy Mock
查看>>
看看 Delphi XE2 为 VCL 提供的 14 种样式
查看>>
Python内置函数(29)——help
查看>>
机器学习系列-tensorflow-01-急切执行API
查看>>
《架构之美》阅读笔记05
查看>>
《大道至简》读后感——论沟通的重要性
查看>>
JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)
查看>>
关于React中props与state的一知半解
查看>>
java中Hashtable和HashMap的区别(转)
查看>>
关闭数据库
查看>>
webStrom智能提示忽略首字母大小写问题
查看>>
层叠加的五条叠加法则(一)
查看>>
设计模式六大原则(5):迪米特法则
查看>>
对Feature的操作插入添加删除
查看>>