Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

单向BFS,WA了十几次,求助!!!

Posted by 281565839 at 2021-05-17 14:57:10 on Problem 1915
#include <stdio.h>
#define MaxSize 310

int num, n, startx, starty, endx, endy;
bool map[MaxSize][MaxSize];
int dir[8][2] = { {-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}, {1, -2}, {-1, -2}, {-2, -1} };
typedef struct point {
	int x, y, step;
}pointQueue[MaxSize];
int front = 0, rear = 0;

int bfs() {
	point now; now.x = startx; now.y = starty; now.step = 0;
	pointQueue queue; queue[rear] = now; rear = (rear + 1) % MaxSize;
	point first, next;
	while (front != rear) {
		first = queue[front]; front = (front + 1) % MaxSize;
		if (first.x == endx && first.y == endy)
			return first.step;
		for (int i = 0; i < 8; i++) {
			int x = first.x + dir[i][0], y = first.y + dir[i][1];
			if (x >= 0 && x < n&&y >= 0 && y < n && !map[x][y]) {
				map[x][y] = true;
				next.x = x; next.y = y; next.step = first.step + 1;
				queue[rear] = next; rear = (rear + 1) % MaxSize;
			}
		}
	}
	return 0;
}
int main() {
	scanf("%d", &num);
	while (num--) {
		scanf("%d", &n);
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				map[i][j] = false;
		scanf("%d%d%d%d", &startx, &starty, &endx, &endy);
		map[startx][starty] = true;
		front = rear = 0;
		printf("%d\n", bfs());
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator