前言

最近板子题刷多了……

题意

一个 \(8\times 8\) 的棋盘,问马从起点到终点的最短步数为多少。

\(\sf Solution\)

要求最短路径嘛,显然 bfs 更优。

读入

这个读入处理有点麻烦……

我们可以把表示行的字符转化为数字,即 ch-'a'+1

搜索

将起点入队,每次获取队首元素并相应扩展,记录步数。

搜到的第一条路径就是最短路径,直接输出 step 。

\(\sf Code\)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;
struct node
{
int x,y,step;
} o;
queue<node>q;
int dx[8]={-1,1,-1,1,-2,2,-2,2},
dy[8]={-2,2,2,-2,-1,1,1,-1};//马的八个方向
bool vis[10][10];//标记数组
int sx,sy,ex,ey,xx,yy;
char ch;
string qx,qy;
int main()
{
while(cin>>qx&&qx[0]!=EOF)
{
cin>>qy;
sx=qx[0]-'a'+1,sy=qx[1]-'0';
ex=qy[0]-'a'+1,ey=qy[1]-'0';//读入
memset(vis,false,sizeof(vis));//初始化
vis[sx][sy]=true;
q.push((node){sx,sy,0});
while(!q.empty())
{
o=q.front(),q.pop();
if(o.x==ex&&o.y==ey)//找到路径
{
cout<<"To get from "<<qx<<" to "<<qy<<" takes "<<o.step<<" knight moves.\n";
break;
}
for(int i=0;i<8;++i)//扩展
{
xx=o.x+dx[i],yy=o.y+dy[i];
if(xx<=0||yy<=0||xx>8||yy>8)
continue;
if(vis[xx][yy])
continue;//不符合要求的情况都排除
vis[xx][yy]=true,q.push((node){xx,yy,o.step+1});
}
}
while(!q.empty())
q.pop();//别忘记清空队列
}
return 0;
}

最新文章

  1. 【网络】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
  2. 51Node 1483----化学变换(暴力枚举)
  3. [转]centos7 配置yum源(本地+光盘)
  4. Flex SuperTabNavigator Tab标签图片不显示或图片显示不完全
  5. Android:打包apk
  6. 关于NSLocalizedString(@&quot;Foo %@&quot;,nil)
  7. 贪心(数据结构):COGS 468. [NOI2010]超级钢琴
  8. web references是在.NET下的一个东东?它有什么用呢?和“引用”有什么区别!
  9. curl+个人证书(又叫客户端证书)访问https站点
  10. Android系统开机启动画面显示过程简要说明
  11. php常用数据结构
  12. [知了堂学习笔记]_Jquery_Validate 表单校验的使用
  13. Asp.Net Core配置的知识总结
  14. 使用asp.net MVC的 HtmlHelper 时遇到的小问题,报错:Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
  15. js-重写jquery的ajax中的内容
  16. JSON转JS对象,JS对象转JSON
  17. StringBuilder的实现与技巧ZZ
  18. MySQL下concat函数中null值问题
  19. uva 10537 Toll! Revisited(优先队列优化dijstra及变形)
  20. zabbix 部署 jmx 监控tomcat

热门文章

  1. WebStorm 配置 Vue3 的文件模板
  2. Word 脚注和尾注是什么?怎么设置?
  3. K8S中部署apisix(非ingress)
  4. scp复制发送文件夹到其他服务器上
  5. Merge Into 语法支持
  6. KingbaseES R3 受限dba影响集群切换
  7. 弱隔离级别 &amp; 事务并发问题
  8. C#,使用NPOI,导出excel文件
  9. 【设计模式】Java设计模式 - 享元模式
  10. 通俗易懂理解 MySQL B+树、数据存储、索引等知识