求救,才70分
查看原帖
求救,才70分
365433
Mark_M楼主2022/3/3 21:41
#include <bits/stdc++.h>
using namespace std;
int x_1,y_1,x_2,y_2;
int dir[12][2]={{-1,-2},{-2,-2},{-2,-1},{1,2},{2,2},{2,1},{1,-2},{2,-2},{2,-1},{-1,-2},{-2,-2},{-2,-1}};
bool vis[25][25];

struct Node{
	int x;
	int y;
	int step;
};

bool check(int x,int y){
	if(x>=0&&x<20&&y>=0&&y<20&&vis[x][y]==false){
		return true;
	}
	return false;
}

int BFS(int x,int y){
	memset(vis,false,sizeof(vis));
	
	queue<Node> Q;
	Node q={x,y,0};
	Q.push(q);
	
	while(!Q.empty()){
		Node t=Q.front();
		Q.pop();
		if(t.x==0&&t.y==0){
			return t.step;
		}
		
		for(int i=0;i<12;i++){
			int xx=t.x+dir[i][0];
			int yy=t.y+dir[i][1];
			if(check(xx,yy)){
				Node m={xx,yy,t.step+1};
				Q.push(m);
				vis[xx][yy]=true;
			}
		}
		
	}
}

int main(int argc, char** argv){
	cin>>x_1>>y_1>>x_2>>y_2;
	x_1--;
	y_1--;
	x_2--;
	y_2--;
	
	cout<<BFS(x_1,y_1)<<endl;
	cout<<BFS(x_2,y_2);
	return 0;
}

有没有dalao能帮忙指出问题? 3Q

2022/3/3 21:41
加载中...