70分求助
查看原帖
70分求助
351249
qige_mingzi楼主2020/9/21 22:36
#include<iostream>
#include<cstdio>
using namespace std;
struct node{
	int xx,yy,step;
};
node que[5000];
int m,n,sx,sy;
int dir[8][2] = {{-2,1},{-1,2},{1,2},{2,1},
		        {2,-1},{1,-2},{-1,-2},{-2,-1}};
int bfs(int x,int y,int fx,int fy){
//	cout << x<<" "  << y <<endl;
	int head = 0,tail = 0,book[400][400] = {};
	book[x][y] = 1;
	que[tail].xx = x;
	que[tail].yy = y;
	que[tail].step = 0;
	tail++;
	while(head<tail){
		for(int i = 0;i < 8;i++){
			int tx = dir[i][0] + que[head].xx;
			int ty = dir[i][1] + que[head].yy;
			if(tx >= 1 && tx <= m && ty >= 1       && ty <= n && book[tx][ty] == 0){
				book[tx][ty] = 1; 
				que[tail].xx = tx;
				que[tail].yy = ty;
				que[tail].step = que[head].step + 1;
				tail++; 
			}
//			cout << tx << " "<< ty  << " " <<endl;
			if(tx == fx && ty == fy){
				return que[tail-1].step;
			}
		}
		head++;
	}
	return -1; 
}
int main()
{
	int x;
	cin >> m >> n >> sx >> sy;
	for(int i = 1;i <= m;i++){
		for(int j = 1;j <= n;j++){
			if(i==sx&&j==sy){
				printf("%-5d",0);
			}
			else{
				printf("%-5d",bfs(sx,sy,i,j));
	//		bfs(sx,sy,i,j);
			}
		}
		cout << endl;
	}
	return 0;
 } 
2020/9/21 22:36
加载中...