poj 1915 Knight Moves【BFS】【简单】

原创 2015年11月18日 21:25:42

Knight Moves
Time Limit: 1000MS   Memory Limit: 30000K
Total Submissions: 23541   Accepted: 11059

Description

题目大意:输入N,表示棋盘大小为N*N,在输入两个坐标,分别是起始点与目标点,问从起始点到目标点的最少步数【马的行走规则与国际象棋中的一样】,

Sample Input

3
8
0 0
7 0
100
0 0
30 50
10
1 1
1 1

Sample Output

5
28
0

已Accept代码【c++提交】

#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;

int dx[] = {1, 1, -1, -1, 2, 2, -2, -2};
int dy[] = {2, -2, 2, -2, 1, -1, 1, -1};
int n;
int dis[301][301];
int a, b, x, y;
typedef struct node{
	int x, y;
	node() {}
	node(int x, int y) : x(x), y(y) {}
}node;


void BFS() {
	queue <node> Q;
	memset(dis, 0x3f3f3f3f, sizeof(dis));
	Q.push(node(a, b));
	dis[a][b] = 0;
	while(!Q.empty()) {
		node k = Q.front();
		Q.pop();
		int r = k.x;
		int c = k.y;
		int ok = 0;
		for(int i = 0; i < 8; i++) {
			int nx = r + dx[i];
			int ny = c + dy[i];
			if(nx < 0 || nx >=n || ny < 0 || ny >= n)
				continue;
			if(dis[nx][ny] > dis[r][c] + 1) {
				dis[nx][ny] = dis[r][c] + 1;
				Q.push(node(nx, ny));
			}
		}
	}
	printf("%d\n", dis[x][y]);
}

int main() {
	int t;
	scanf("%d", &t);
	while(t--) {
		scanf("%d", &n);
		scanf("%d%d%d%d", &a, &b, &x, &y);
		BFS();
	}
	return 0;
}

版权声明:本文为博主原创文章,转载请注明出处,谢谢。

POJ 1915 Knight Moves(DFS/BFS)

POJ 1915 Knight Moves(DFS/BFS) http://poj.org/problem?id=1915 题意:一个N*N的棋牌上,问你中国象棋的马从一个指定点走到另外一个指定点最少...
  • u013480600
  • u013480600
  • 2014年05月10日 18:57
  • 800

POJ1915:Knight Moves(BFS)

Description Background Mr Somurolov, fabulous chess-gamer indeed, asserts that no one else but hi...
  • libin56842
  • libin56842
  • 2014年04月01日 20:55
  • 2465

POJ 2243 ZOJ 1091 UVaOJ 439 Knight moves(BFS广度优先搜索)

//典型的BFS(广度优先搜索)//马走日所需最少步数问题#includeusing namespace std;int map[8][8];//记录步数数组int vis[8][8];//访问过的记...
  • ChinaCzy
  • ChinaCzy
  • 2010年02月14日 21:50
  • 851

HDU 1372 Knight Moves (搜索 使用 dfs bfs两种实现)

题目意思:在一张8*8的象棋盘上,马走日的方式移动,问任意给定的两点pa,pb,问从pa到pb至少需要移动几步。 bfs是最好的解决方法,简单而且高效,在这里我同时用了dfs来实现,在时间上稍差了一些...
  • IAccepted
  • IAccepted
  • 2014年04月15日 11:38
  • 2941

POJ 1915 Knight Moves(BFS)

Knight Moves Description Background  Mr Somurolov, fabulous chess-gamer indeed, asserts that no ...
  • qq_26658823
  • qq_26658823
  • 2016年07月15日 16:33
  • 138

【BFS】poj 1915 Knight Moves

无加权求最短路bfs
  • GreatJames
  • GreatJames
  • 2017年07月13日 11:49
  • 77

Poj 1915 Knight Moves(BFS)

Description Background  Mr Somurolov, fabulous chess-gamer indeed, asserts that no one else but ...
  • u010857889
  • u010857889
  • 2014年03月11日 22:53
  • 340

poj 1915 Knight Moves(bfs)

Knight Moves Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22204   ...
  • acm_BaiHuzi
  • acm_BaiHuzi
  • 2014年11月25日 15:23
  • 913

POJ 1915 Knight Moves bfs

来源:http://poj.org/problem?id=1915 题意:就是给你一个边长为n的国际象棋棋盘,然后给了你王后的走法,并且给出起点和终点,求从起点到终点需要多少步。 思路:简单的bf...
  • wmn_wmn
  • wmn_wmn
  • 2012年08月16日 10:10
  • 495

POJ 1915 Knight Moves BFS

Description Background Mr Somurolov, fabulous chess-gamer indeed, asserts that no one else but him...
  • qq_37817194
  • qq_37817194
  • 2017年05月31日 09:12
  • 57
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1915 Knight Moves【BFS】【简单】
举报原因:
原因补充:

(最多只允许输入30个字)