帮帮我吧(55分)
查看原帖
帮帮我吧(55分)
685195
vincent125楼主2023/7/19 21:03
using namespace std;
long long  m,n,m1,m2,c[1999][1999],wz1,wz2,wz3,wz4,vis[1999][1999],xd[9],yd[9];
//struct p{
//    int ;
//};
//queue <p > q;
void dfs(int aa,int bb,int bs){
	vis[aa][bb]=1;
	if(aa==wz3&&bb==wz4){
		cout<<bs;
		return ;
	}
	for(int i=1;i<=8;i++){
		int xss=aa+xd[i],yss=bb+yd[i];
		if(xss>=0&&xss<m&&yss>=0&&yss<n&&!vis[xss][yss]){
			vis[xss][yss]=1;
			dfs(xss,yss,bs+1);
		}
	}
}
int main(){
	cin>>m>>n>>m1>>m2;
	xd[1]=m1;xd[2]=m1;xd[3]=0-m1;xd[4]=0-m1;
 yd[5]=m1;yd[6]=m1;yd[7]=0-m1;yd[8]=0-m1;
 xd[5]=m2;xd[6]=0-m2;xd[7]=0-m2;xd[8]=m2;
 yd[1]=m2;yd[2]=0-m2;yd[3]=0-m2;yd[4]=m2;
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			cin>>c[i][j];
			if(c[i][j]==0) vis[i][j]=1;
			if(c[i][j]==2) vis[i][j]=1;
			if(c[i][j]==3) {wz1=i,wz2=j;}
			if(c[i][j]==4) {wz3=i,wz4=j;}
		}
 }
	dfs(wz1,wz2,0);
	return 0;
}
2023/7/19 21:03
加载中...