疑问?这种写法找不到出口的原因是?
查看原帖
疑问?这种写法找不到出口的原因是?
243969
liangtingjia楼主2023/11/3 10:26
#include <bits/stdc++.h>
using namespace std;
int n,m,sx,sy;
char a[305][305];
int  b[305][305]={0};
int p[305*305][4];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]=='@'){
				sx=i;
				sy=j;
			}
		}
	}
	int head=1,tail=1;
	p[1][1]=sx;
	p[1][2]=sy;
	p[1][3]=0;
	b[sx][sy]=1;
	while(head<=tail){
		for(int i=0;i<4;i++){
			int ux=p[head][1]+dx[i];
			int uy=p[head][2]+dy[i];
			//cout<<ux<<" "<<uy<<endl;
			if(ux<1 || ux>n ||uy<1 || uy>m ||b[ux][uy]==1||a[ux][uy]=='#') continue;
			else if(a[ux][uy]=='='){
				cout<<p[head][3]+1;
				return 0;
			}
			else if(a[ux][uy]=='.'){
				tail++;
				p[tail][1]=ux;
				p[tail][2]=uy;
				p[tail][3]=p[head][3]+1;
				b[ux][uy]=1;
			}else{
			//cout<<ux<<" "<<uy<<endl;
				for(int i=1;i<=n;i++){
					for(int j=1;j<=m;j++){
						if(a[i][j]==a[ux][uy] && i!=ux && j!=uy){
							tail++;
							b[ux][uy]=1;
							p[tail][1]=i;
							p[tail][2]=j;
							p[tail][3]=p[head][3]+1;
						}
					}
				}
				
			}
		cout<<ux<<" "<<uy<<endl;
		}
		head++;
	}
    return 0;
    
}
2023/11/3 10:26
加载中...