uva 439 - Knight Moves
来源:互联网 发布:2017年6月进出口数据 编辑:程序博客网 时间:2024/05/20 12:24
给定起点和终点,最少需要几步才能走到。骑士按照马的走法。
简单的bfs。
#include<cstdio>#include<cstring>#include<queue>using namespace std;const int MAXN=128;typedef struct{ char a[3]; int time;}solve;solve d1,d2;int dx[]={-1,-2,-2,-1,1,1,2,2};int dy[]={-2,-1,1,2,2,-2,-1,1};char temp1[3],temp2[3];bool vis[MAXN][MAXN];bool limit(char a,char b){ if(a>='a' && a<='h' && b>='1' && b<='8') return true; else return false;}void bfs(){ queue<solve>q; while(!q.empty()) q.pop(); q.push(d1); vis[d1.a[0]][d1.a[1]]=true; while(!q.empty()){ d2=q.front(); //printf("%c%c\n",d2.a[0],d2.a[1]); if(d2.a[0]==temp2[0] && d2.a[1]==temp2[1]){ printf("To get from %s to %s takes %d knight moves.\n",temp1,temp2,d2.time); return ; } for(int i=0;i<8;i++){ d1.a[0]=d2.a[0]+dx[i]; d1.a[1]=d2.a[1]+dy[i]; d1.time=d2.time+1; if(limit(d1.a[0],d1.a[1]) && !vis[d1.a[0]][d1.a[1]]){ q.push(d1); vis[d1.a[0]][d1.a[1]]=true; } } q.pop(); }}int main(){ //freopen("in.txt","r",stdin); while(~scanf("%s%s",temp1,temp2)){ memset(vis,false,sizeof(vis)); d1.a[0]=temp1[0]; d1.a[1]=temp1[1]; d1.time=0; bfs(); } return 0;}
0 0
- uva 439 knight moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva-439 - Knight Moves
- UVa 439 - Knight Moves
- UVa 439 - Knight Moves
- UVA 439 - Knight Moves
- uva 439 Knight Moves
- UVa 439 - Knight Moves
- uva 439 - Knight Moves
- UVa:439 Knight Moves
- uva 439 - Knight Moves
- uva 439 Knight Moves
- UVa 439 - Knight Moves
- uva 439 - Knight Moves
- UVA 439 - Knight Moves
- HDU 4004 The Frog's Games(二分)
- 以NuoDB为代表的NewSQL
- Git操作指南(2)
- JD 1351 数组中只出现一次的数字
- 梦想天空分外蓝,实习结束总结
- uva 439 - Knight Moves
- ubuntu server 12 LTS 安装 trac 笔记
- TQ2440移植yaffs2文件系统基于linux 2.6.30.4
- ios之协议传值(Protocol)
- (十)泛型算法
- 一个经验法则
- cvCopy与cvCloneImage的区别
- 图论之Dijkstra算法求最短路径
- 2014.3.1