改对必关!
查看原帖
改对必关!
1243618
Jokersheng楼主2024/12/22 11:15
#include <bits/stdc++.h>
using namespace std;

int xx1,yy1,xx2,yy2;

int dx[12]={-2,-1,1,2,2,1,-1,-2,-2,2,2,-2};
int dy[12]={1,2,2,1,-1,-2,-2,-1,2,2,-2,-2};

bool vis[30][30];

int t[30][30];
queue <int> p,q;

void bfs(int x,int y){
	p.push(x);
	q.push(y);
	int tx,ty;
	while(!p.empty()){
		tx=p.front();
		ty=q.front();
		if(tx==1&&ty==1){
			cout<<t[tx][ty]<<endl;
			break;
		}
		for(int i=0;i<12;i++){
			if(tx+dx[i]>=1&&ty+dy[i]>=1&&tx+dx[i]<=20&&ty+dy[i]<=20){
				if(vis[tx+dx[i]][ty+dy[i]]==0){
					vis[tx+dx[i]][ty+dy[i]]=1;
					t[tx+dx[i]][ty+dy[i]]=t[tx+dx[i]][ty+dy[i]]+1;
					p.push(tx+dx[i]);
					q.push(ty+dy[i]);
				}
			}
		}
		p.pop();
		q.pop();
	}
}

int main(){
	cin>>xx1>>yy1>>xx2>>yy2;
	bfs(xx1,yy1);
	memset(vis,0,sizeof(vis));
	memset(t,0,sizeof(t));
	bfs(xx2,yy2);
	return 0;
} 
2024/12/22 11:15
加载中...