求助
查看原帖
求助
706760
xiaofeng_and_xiaoyu楼主2023/6/29 19:28
#include<bits/stdc++.h>
using namespace std;
int r[101][101];
int t[101][101];
queue<int> x;
queue<int> y;
int dx[8];
int dy[8];
int main(){
	int a,b,c,d,nx=0,ny=0,wx,wy;
	cin>>a>>b>>c>>d;
	dx[0]=c;
	dx[1]=c;
	dx[2]=-1*c;
	dx[3]=-1*c;
	dx[4]=d;
	dx[5]=d;
	dx[6]=-1*d;
	dx[7]=-1*d;
	dy[5]=c;
	dy[7]=c;
	dy[4]=-1*c;
	dy[6]=-1*c;
	dy[1]=d;
	dy[0]=d;
	dy[3]=-1*d;
	dy[2]=-1*d;
	for(int i=1;i<=a;i++){
		for(int j=1;j<=a;j++){
			cin>>r[i][j];
			if(r[i][j]==3){
				nx=i;
				ny=j;
				x.push(i);
				y.push(j);	
			}
			if(r[i][j]==4){
				wx=i;
				wy=j;
			}
		}
	}
	while(1){
		t[nx][ny]+=1;
		r[nx][ny]=0; 
		for(int i=0;i<8;i++){
			if(dx[i]+nx<=a&&dx[i]+nx>0&&dy[i]+ny>=b&&dy[i]+ny<=0&&r[nx+dx[i]][ny+dy[i]]==1){
				x.push(dx[i]+nx);
				y.push(dy[i]+ny);
				t[dx[i]+nx][dy[i]+ny]=t[nx][ny];
			}
		}
		x.pop();
		y.pop();
		if(nx==wx&&ny==wy){
			break;
		}
	}
	cout<<t[wx][wy];
	return 0;
}

手打BFS,没什么经验

2023/6/29 19:28
加载中...