knight moves经典广搜(bfs)
来源:互联网 发布:淘宝店铺旺旺客服 编辑:程序博客网 时间:2024/06/12 23:40
Problem Description
A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the shortest closed tour of knight moves that visits each square of a given set of n squares on a chessboard exactly once. He thinks that the most difficult part of the problem is determining the smallest number of knight moves between two given squares and that, once you have accomplished this, finding the tour would be easy.
Of course you know that it is vice versa. So you offer him to write a program that solves the "difficult" part.
Your job is to write a program that takes two squares a and b as input and then determines the number of knight moves on a shortest route from a to b.
Sample Input
e2 e4a1 b2b2 c3a1 h8a1 h7h8 a1b1 c3f6 f6
To get from e2 to e4 takes 2 knight moves.To get from a1 to b2 takes 4 knight moves.To get from b2 to c3 takes 2 knight moves.To get from a1 to h8 takes 6 knight moves.To get from a1 to h7 takes 5 knight moves.To get from h8 to a1 takes 6 knight moves.To get from b1 to c3 takes 1 knight moves.To get from f6 to f6 takes 0 knight moves.
#if 1 #include<bits/stdc++.h>using namespace std;int step[8][8];int dir[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};bool pd(int x,int y) { if(x>=0 && x<=7 && y>=0 && y<=7) return 1; else return 0;} int starx,stary,endx,endy;int bfs(){ memset(step,0,sizeof(step)); queue <int>q; int x,y,x1,y1; q.push(starx); q.push(stary); step[x][y]=0; while(!q.empty()) { x=q.front(); q.pop(); y=q.front(); q.pop(); if(x==endx && y==endy) //看看现在的位置是不是 return step[x][y]; else { for(int i=0; i<=7; i++) { x1=x+dir[i][0]; y1=y+dir[i][1]; if(pd(x1,y1)) { q.push(x1); q.push(y1); step[x1][y1]=step[x][y]+1;} } }}}int main(){char a[3],b[3];while(cin>>a>>b){starx=a[0]-'a';stary=a[1]-'1';endx=b[0]-'a';endy=b[1]-'1';int ans=bfs();cout<<"To get from "<<a<<" to "<<b<<" takes "<<ans<<" knight moves."<<endl;}}#endif
- knight moves经典广搜(bfs)
- HDOJ 1372 Knight Moves(BFS 广搜)
- HDU1372 Knight Moves(广搜BFS+深搜DFS)
- HDU 1372 Knight Moves(广搜BFS)
- POJ-1915 Knight Moves(双向广搜BFS)
- POJ1915 Knight Moves 经典BFS
- BFS算法经典 Knight moves
- 1915 Knight Moves 广搜
- 简单广搜:Knight Moves
- hdu 1372 Knight Moves(经典BFS)
- HDU 1372 Knight Moves 【经典BFS】
- HDOJ/HDU 1372 Knight Moves(经典BFS)
- poj 1915 Knight Moves(双向广搜)
- hdu 1372 Knight Moves(广搜)
- hdu 1372 Knight Moves(广搜)
- Poj 1915 - Knight Moves 双向广搜
- UVA 439 Knight Moves 简单广搜
- poj-1915-Knight Moves(广搜)
- TensorFlow笔记(二):多层CNN代码详细介绍
- bzoj1041 圆上的整点(一种新奇的思路)
- 结构体typedef struct的用法 和结构体的定义
- IP地址正则匹配解析
- Linux 进程与线程一(创建-关闭线程)
- knight moves经典广搜(bfs)
- https://zhidao.baidu.com/question/1543082147564945667.html
- 如何在 Kaggle 首战中进入前 10%
- Restful接口实现实例
- macbook pro 用 DP 接口外接显示器系统音量不可用
- SpringMVC总结
- 点击图片控制音乐播放及暂停
- Session & Token
- 简单的使用ehcache