洛谷 - P1443 - 马的遍历 - bfs
2024-09-05 22:03:55
略有收获的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[][]; struct QueueNode{
int x,y,t;
QueueNode(int x=,int y=,int t=):x(x),y(y),t(t){}
}; queue<QueueNode> q;
inline void try_enqueue(int x,int y,int t){
if(x>=&&x<=n&&y>=&&y<=m&&ans[x][y]==-){
ans[x][y]=t+;
q.push(QueueNode(x,y,t+));
}
} void bfs(){
try_enqueue(sx,sy,-);
while(!q.empty()){
QueueNode cur=q.front();
q.pop(); int x=cur.x;
int y=cur.y;
int t=cur.t; try_enqueue(x-,y-,t);
try_enqueue(x-,y-,t);
try_enqueue(x-,y+,t);
try_enqueue(x-,y+,t);
try_enqueue(x+,y+,t);
try_enqueue(x+,y+,t);
try_enqueue(x+,y-,t);
try_enqueue(x+,y-,t);
}
} int main(){
scanf("%d%d%d%d",&n,&m,&sx,&sy);
memset(ans,-,sizeof(ans)); bfs(); for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
printf("%-4d%c",ans[i][j]," \n"[j==m]);
}
}
}
最新文章
- iOS基于MVC的项目重构总结
- cdnbest的站点设置里设置url跳转设置
- dojo/dom-form
- I&rsquo;ve seen the world,lit it up as my stage now
- a==null和a.equals(";null";)的区别
- C++容器的复制
- JavaScript函数小结
- Android 开源项目 eoe 社区 Android 客户端(转)
- [转载]linux下mysql 自动备份
- Tair LDB基于Prefixkey中期范围内查找性能优化项目总结
- Struts2入门到放弃
- REST&;RESTFUL
- linux shell 备注(一)
- jdk7_ConcurrentHashMap 图示
- mysql安装出现问题(The service already exists)
- struggle in the ACM(一)
- A - Packets 贪心
- 一道颇有难度的JavaScript题
- 线程的条件Condiition
- USB 驱动(监测鼠标左键的动作)
热门文章
- TFTP服务器
- Android studio 导入githubproject
- time machine不备份指定文件夹
- sql 导入数据库 出现乱码问题 解决办法 设置 --default-character-set=utf8
- js 监控浏览器关闭(完美兼容chrome &; ie &; fire fox)
- CodeForces 318D Ants
- STL review:vector &; string &; map &; struct
- 设计模式学习笔记——State状态模式
- jws webservice code
- mysql数据库隔离级别及其原理、Spring的7种事物传播行为