hdu 1372 Knight Moves
2013-07-04 16:13
253 查看
链接:点击打开链接
给你8*8的棋盘,给你起点和终点,用马走日,最少几步可以从起点走到终点。简单BFS。
给你8*8的棋盘,给你起点和终点,用马走日,最少几步可以从起点走到终点。简单BFS。
#include<iostream> #include<stdio.h> #include<string.h> #include<queue> using namespace std; int sx,sy,ex,ey; char a[5],b[5]; int c[8][2]={-1,2,-2,1,-2,-1,-1,-2,1,-2,2,-1,2,1,1,2},vis[10][10]; struct ss{ int x,y,count; }; void bfs(){ int i; ss p,s; queue<ss>Q; p.x=sx; p.y=sy; p.count=0; Q.push(p); vis[sx][sy]=1; while(!Q.empty()){ p=Q.front(); Q.pop(); for(i=0;i<8;i++){ s=p; s.x+=c[i][0]; s.y+=c[i][1]; if(s.x>=1&&s.x<=8&&s.y>=1&&s.y<=8&&!vis[s.x][s.y]){ s.count++; if(s.x==ex&&s.y==ey){ printf("To get from %s to %s takes %d knight moves.\n",a,b,s.count); return; } vis[s.x][s.y]=1; Q.push(s); } } } printf("To get from %s to %s takes 0 knight moves.\n",a,b); } int main(){ while(~scanf("%s %s",a,b)){ sx=a[0]-'a'+1; sy=a[1]-'0'; ex=b[0]-'a'+1; ey=b[1]-'0'; memset(vis,0,sizeof(vis)); bfs(); } return 0; }
相关文章推荐
- hdu(1372) Knight Moves
- HDU 1372 Knight Moves
- hdu 1372 Knight Moves 骑士的移动 bfs--马走日
- hdu-1372-Knight Moves(bfs和dfs)
- HDU-1372Knight Moves(BFS)
- HDU - 1372 Knight Moves ( 简单BFS + floodfill )
- HDU-1372 Knight Moves (BFS)
- HDU1372 Knight Moves(bfs)
- HDU 1372 Knight Moves(BFS)
- hdu 1372 Knight Moves(骑士遍历/跳马问题)
- Knight Moves(HDU 1372)(BFS)
- hdu 1372 Knight Moves 简单bfs
- HDU ACM 1372 Knight Moves (BFS)
- HDU-1372-Knight Moves
- (step4.2.1) hdu 1372(Knight Moves——BFS)
- hdu 1372 Knight Moves
- hdu1372 Knight Moves
- hdu 1372 Knight Moves(bfs)
- HDU 1372 Knight Moves【BFS】
- HDU 1372 Knight Moves