acm_Knight Moves
来源:互联网 发布:淘宝代销和经销的区别 编辑:程序博客网 时间:2024/05/22 12:27
题目:
e2 e4<br>a1 b2<br>b2 c3<br>a1 h8<br>a1 h7<br>h8 a1<br>b1 c3<br>f6 f6<br>
To get from e2 to e4 takes 2 knight moves.<br>To get from a1 to b2 takes 4 knight moves.<br>To get from b2 to c3 takes 2 knight moves.<br>To get from a1 to h8 takes 6 knight moves.<br>To get from a1 to h7 takes 5 knight moves.<br>To get from h8 to a1 takes 6 knight moves.<br>To get from b1 to c3 takes 1 knight moves.<br>To get from f6 to f6 takes 0 knight moves.<br>
题意:
就是一种走法,给你一种固定的走法,再给你一个起点坐标,一个终点坐标。。求最小步数。。
想法:
广搜,最先走到的就是最小的。。
代码:
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
struct point
{
char x;
int y;
int moves;
};
queue<point> Q;
char e_x;
int e_y;
int map[305][305];
int dir[8][2]={{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2}};
int bfs(point s)
{
int i;
map[s.x][s.y]=1;
point head,t;
Q.push(s);
while(!Q.empty ())
{
head=Q.front ();
Q.pop ();
if(head.x==e_x&&head.y==e_y) return head.moves;
for(i=0;i<8;i++)
{
int x=head.x+dir[i][0];
int y=head.y+dir[i][1];
if(x>='a'&&x<='h'&&y>=1&&y<=8&&!map[x][y])
{
map[x][y]=1;
t.x=x;
t.y =y;
t.moves =head.moves+1;
Q.push(t);
}
}
}
}
int main()
{
int n,j,i,ans;
char s_x;
int s_y;
point start;
while(cin>>s_x>>s_y>>e_x>>e_y)
{
for(i='a';i<='h';i++)
for(j=1;j<=8;j++)
map[i][j]=0;
while(!Q.empty())
Q.pop ();
start.x=s_x;
start.y=s_y;
start.moves=0;
ans=bfs(start);
cout<<"To get from "<<s_x<<s_y<<" to "<<e_x<<e_y<<" takes "<<ans<<" knight moves."<<endl;
}
return 0;
}
- acm_Knight Moves
- Knight Moves
- hdu1372Knight Moves
- pku1915Knight Moves
- zoj1091_hdu1372_Knight Moves
- Knight Moves
- POJ2243Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- Knight Moves
- 文章标题
- PHP 文件上传过程简述
- [swift实战入门]手把手教你编写2048(三)
- stm32 PWM输出
- java中properties文件路径的访问及XML字符编码问题
- acm_Knight Moves
- OpenGL鼠标轨迹球
- 小sugar呀——大数——记录——大数阶乘
- H3C Comware V7 IpsecVpn
- 英语雅思6.5是什么水平?
- LayoutAnimation动画
- LeetCode Different Ways to Add Parentheses
- 为什么viewdidunload被弃用
- HDU 1005 Number Sequence