各位大佬帮我看看可以吗 没有账号啊【哭】
查看原帖
各位大佬帮我看看可以吗 没有账号啊【哭】
550689
eeeeSBsbsb楼主2024/12/7 15:46
#include<bits/stdc++.h>
using namespace std;
string s,z;
int a[10][10];
int vis[10][10];
int dir[8][2]={{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1}};
int xs,ys,xz,yz;
struct node{
	int x,y,step;
};
queue<node> q;
void bfs(){
	q.push(node{xs,ys,0});
	vis[xs][ys]=1;
	while(!q.empty()){
		node t=q.front();
		if(t.x==xz&&t.y==yz){
			cout<<"To get from "<<s<<" to "<<z<<" takes "<<t.step<<" knight moves."<<endl;
		}
		for(int i=0;i<8;i++){
			int xx=t.x+dir[i][0];
			int yy=t.y+dir[i][1];
			if(xx>=1&&xx<=8&&yy>=1&&yy<=8&&vis[xx][yy]==0){
				vis[xx][yy]=1;
				q.push(node{xx,yy,t.step+1});
			}
		}
		q.pop();
	}
}
int main(){
	while(cin>>s>>z){
		while(!q.empty())q.pop();
		memset(vis,0,sizeof(vis));
		ys=s[0]-'a'+1;xs=s[1]-'0';
		yz=z[0]-'a'+1;xz=z[1]-'0';
	//	cout<<xs<<" "<<ys<<" "<<xz<<" "<<yz<<endl;
		bfs();
	}
	return 0;
}

谢谢各位了

2024/12/7 15:46
加载中...