博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1372 Knight Moves
阅读量:6311 次
发布时间:2019-06-22

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

#include
#include
#include
using namespace std;struct node{ int x; int y; int step;} cur,next,st,ed;int dir[8][2]= {-1,-2,-2,-1,-2,1,-1,2,1,2,2,1,2,-1,1,-2};char start[4],end[4];int map[10][10];queue
q;int judge(int x,int y){ if(x<0||x>7||y<0||y>7)return 1; if(map[x][y])return 1; return 0;}int BFS(){ int i; int step=0; memset(map,0,sizeof(map)); while(!q.empty())q.pop(); st.x=start[0]-'a'; st.y=start[1]-'1'; st.step=0; ed.x=end[0]-'a'; ed.y=end[1]-'1'; q.push(st); while(!q.empty()) { cur=q.front(); q.pop(); if(cur.x==ed.x&&cur.y==ed.y)return step; for(i=0; i<8; i++) { next.x=cur.x+dir[i][0]; next.y=cur.y+dir[i][1]; if(judge(next.x,next.y))continue; if(next.x==ed.x&&next.y==ed.y)return cur.step+1; next.step=cur.step+1; map[next.x][next.y]=1; q.push(next); } //step++; } return 0;}int main(){ while(scanf("%s %s",start,end)!=EOF) { //printf("%s %s\n",start,end); int ans=BFS(); printf("To get from %s to %s takes %d knight moves.\n",start,end,ans); memset(start,0,sizeof(start)); memset(end,0,sizeof(end)); } return 0;}

题意为马走日,典型的BFS搜索@#@

转载于:https://www.cnblogs.com/XDJjy/archive/2013/06/01/3112766.html

你可能感兴趣的文章
自定义监控(阿里云&zabbix)
查看>>
ZooKeeper 笔记(2) 监听数据变化
查看>>
将Intent序列化,像Uri一样传递Intent!!!
查看>>
MySQL · 引擎介绍 · Sphinx源码剖析(三)
查看>>
用js实现登录的简单验证
查看>>
Mysql报错5002 - cannot modify reserved database
查看>>
大话MVP
查看>>
Mac上首次出现word宏恶意软件,可窃取用户敏感数据
查看>>
jQuery常用事件方法详解
查看>>
【教程】如何创建尽可能小的Docker容器
查看>>
DockOne微信分享(一一六):某股份制商业银行定制化PaaS介绍
查看>>
被骗好多年:原来这才是大数据
查看>>
阿里云ApsaraCache的正式开源,为什么不能仅仅满足于商业上的成功?
查看>>
这书真的不错--Spring MVC Beginner&#39;s Guide
查看>>
如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方案[上篇]
查看>>
“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用
查看>>
微信小程序自定义多功能模态对话框案例实战
查看>>
activity初探(基于kft-activiti-demo的一个小例子)
查看>>
比Wi-Fi快100倍的Li-Fi,这事靠谱吗?
查看>>
还在用软盘驱动器?下面来看看一款超越1.44 MB容量上限的新方案
查看>>