【C++】只对了#1,求大佬QAQ
查看原帖
【C++】只对了#1,求大佬QAQ
741814
some_ICE_ANK楼主2023/2/21 20:21

样例都过了

#include<iostream>
#include<queue>
using namespace std;
int x,y;
struct node{
	int x;
	int y;
	int s;
};
queue<node>q;
int a[21][21];
int vis[21][21];
int dx[12]={2,2,-2,-2,1,1,-1,1,2,2,-2,-2};
int dy[12]={1,-1,1,1,2,-2,2,2,2,-2,2,-2};
void bfs(){
	q.push(node{x,y,0});
	vis[x][y]=1;
	while(!q.empty()){
		if(q.front().x==1 && q.front().y==1){
			cout<<q.front().s-1<<endl;
			return;
		}
		for(int i=0;i<12;i++){
			int xx=q.front().x+dx[i];
			int yy=q.front().y+dy[i];
			if(xx>20 || yy>20 || xx<1 || yy<1){
				continue;
			}
			if(xx>=1 && yy>=1 && xx<=x && yy<=y && vis[xx][yy]!=1){
				vis[xx][yy]=1;
				q.push(node{xx,yy,q.front().s+1});
			}
		}
		q.pop();
	}
}
int main(){
	cin>>x>>y;
	bfs();
	for(int i=1;i<21;i++){
		for(int j=1;j<21;j++){
			vis[i][j]=0;
		}
	}
	while(!q.empty()){
		q.pop();
	}
	cin>>x>>y;
	bfs();
	return 0;
}
2023/2/21 20:21
加载中...