439骑士走到固定位置最短路程
来源:互联网 发布:农村淘宝的官网 编辑:程序博客网 时间:2024/05/16 09:29
#include <iostream>
#include <cstring>
#include <cstdio>
#define MAX 10
using namespace std;
int q[MAX*MAX]; //·½¸ñ
int dist[MAX][MAX]; // ¾àÀë
int vis[MAX][MAX];
int dx[] = {-1,-2,-2,-1,1,2,2,1};
int dy[] = {-2,-1,1,2,2,1,-1,-2};
int bfs(int x,int y,int a,int b)
{
if(x == a && y == b) return 0;
memset(vis,0,sizeof(vis));
int front = 0,rear = 0,u;
u = x * 8 + y;
dist[x][y] = 0;
q[rear++] = u;
while(front < rear)
{
u = q[front++];
x = u / 8; y = u % 8;
if( y == 0) {y = 8;x = x-1;};
for(int i = 0;i < 8;i++)
{
int nx = x+dx[i],ny = y+dy[i];
if(nx >0 && nx <= 8 && ny > 0 && ny <=8 && !vis[nx][ny])
{
int v = nx*8 + ny;
q[rear++] = v;
vis[nx][ny] = 1;
dist[nx][ny] = dist[x][y] + 1;
if(nx == a && ny == b) return dist[a][b];
}
}
}
}
int main()
{
// freopen("in.in","r",stdin);
char x[3],y[3];
while(scanf("%s%s",x,y) == 2)
{
int count;
if(x[0] < y[0] || (x[0] == y[0] && x[1] <= y[1])){
count = bfs(y[1]-'0',y[0]-'a'+1,x[1]-'0',x[0]-'a'+1);
}
else{
count = bfs(x[1]-'0',x[0]-'a'+1,y[1]-'0',y[0]-'a'+1);
}
printf("To get from %s to %s takes %d knight moves.\n",x,y,count);
}
}
- 439骑士走到固定位置最短路程
- 最短路程
- poj 1456 Supermarket (最短路程)
- hdu-2066-最短路程问题
- 度度熊回家-百度-最短路程
- 【Codeforces 599A】Patrick and Shopping 最短路程
- 【java】走迷宫最短路径
- 跳转到页面固定位置
- 跳转到页面固定位置
- (转)什么是Floyd算法:从i号顶点到j号顶点只经过 前 k号点的最短路程
- 3*4的网状方格从左下角走到右上角的最短路线的条数
- 骑士走棋盘问题
- 骑士走棋盘
- 骑士走棋盘
- 骑士走棋盘
- 骑士走棋盘
- 骑士走盘问题
- jquery滑动到一定位置固定
- 327 - Evaluating Simple C Expressions
- K好数
- web应用,javaEE企业级应用,如何严格区分?
- 双向链表的一个C++实现
- JAVA [ 集合 ]
- 439骑士走到固定位置最短路程
- 705 - Slash Maze
- 回溯走棋盘
- 翻译工作不好干
- 折半查找:有序表的查找
- Fedora 15五笔和拼音输入法安装及配置
- 写给过去,写给将来
- Euler 欧拉
- jQuery PAGINATION 分页插件学习笔记