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

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

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 int IsVis[9][9];//记录位置是否被访问 7 int StaX,StaY,EndX,EndY; 8 char Start[3],End[3]; //起始及结束位置 9 typedef struct node10 {11 int x,y,MoveNum;12 }knight;13 int Move[8][2]={-1,2, -2,1, 2,1, 1,-2, 1,2, 2,-1, -1,-2, -2,-1};//骑士的移动方位14 void Bfs(int x,int y);15 16 int main(){17 //freopen("D:\\t.txt","r",stdin);18 while(cin>>Start>>End){19 StaX = Start[0] - 'a' + 1;20 StaY = Start[1] - '0';21 EndX = End[0] - 'a' + 1;22 EndY = End[1] - '0';//对输入的棋子的位置进行处理23 Bfs(StaX,StaY);24 }25 return 0;26 }27 void Bfs(int x,int y){28 knight m,n;29 queue
Que;30 31 m.x = x;32 m.y = y;33 m.MoveNum = 0;34 memset(IsVis,0,sizeof(IsVis));//每一回合棋盘初始化35 IsVis[m.x][m.y] = 1;36 Que.push(m);37 while(!Que.empty()){38 m = Que.front();39 Que.pop();40 if(m.x == EndX&&m.y == EndY){41 cout<<"To get from "<
<
<<" to "<
<<" takes "<
<<" knight moves."<
< 8;i++){45 if((m.x + Move[i][0] > 0) && (m.x + Move[i][0] < 9) && (m.y + Move[i][1] > 0) && (m.y + Move[i][1] < 9)46 && !IsVis[m.x + Move[i][0]][m.y + Move[i][1]]){ //判断移动是否超范围及是否被访问47 n.x = m.x + Move[i][0];48 n.y = m.y + Move[i][1];49 n.MoveNum = m.MoveNum + 1;50 Que.push(n);51 }52 }53 }54 55 }

 

题目说的是骑士从一个位置移动到另一个位置所需的步数,国际象棋里骑士移动和中国象棋里的马类似,都是“日”形。

 题目用bfs求解,要运用到队列,使得骑士走的步数不断更新。以便在bfs过程中,统计的移动步数是最短的。

 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/ohxiaobai/p/4044744.html

你可能感兴趣的文章
高并发IM系统架构优化实践
查看>>
产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
查看>>
有关linux--进程组、会话、守护进程详解
查看>>
我的友情链接
查看>>
monkeyrunner运行Python脚本来检查apk渠道和验证是否可以调用微信
查看>>
github获得SSH Key解决Permission denied (publickey)问题
查看>>
用java代码编写Oracle存储过程
查看>>
APACHE转发
查看>>
android-market-api
查看>>
解決 yum update錯誤:[Errno -1] Metadata file does not match checksum
查看>>
ASP.NET(C#)Excel导入Dataset的出现数据值丢失问题
查看>>
我的友情链接
查看>>
『Data Science』R语言学习笔记,获取数据
查看>>
rails中n秒页面自动跳转
查看>>
我的友情链接
查看>>
忘记root用户密码怎么办?
查看>>
esxi定时任务
查看>>
Scaffold-DbContext
查看>>
关于VMware Workstation主机列表问题求教
查看>>
配置管理小报101021:给ubuntu加监控
查看>>