84分,求助(一定关注)(是c++)
  • 板块P2802 回家
  • 楼主cwxczjc
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/1/12 08:45
  • 上次更新2025/1/12 14:39:06
查看原帖
84分,求助(一定关注)(是c++)
949751
cwxczjc楼主2025/1/12 08:45
#include<bits/stdc++.h>
using namespace std;
struct zs{
	int x,y,s,xl=6;
}zd,qd,xd;
char mp[10][10];
int n,m,b[10][10],fx[4][2]={-1,0,0,1,1,0,0,-1};
queue<zs> q;
void bfs(){
	while(!q.empty()){		
		qd=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			xd.x=qd.x+fx[i][0];
			xd.y=qd.y+fx[i][1];
			xd.s=qd.s+1;
			xd.xl=qd.xl-1;
			if((mp[xd.x][xd.y]=='1'||mp[xd.x][xd.y]=='3'||mp[xd.x][xd.y]=='4')&&xd.xl>0&&b[xd.x][xd.y]==0&&xd.x>0&&xd.x<=n&&xd.y>0&&xd.y<=m){
				if(mp[xd.x][xd.y]=='4'&&xd.xl!=0){
					xd.xl=6;
				}
				b[xd.x][xd.y]=1;
				if(xd.x==zd.x&&xd.y==zd.y){
					cout<<xd.s;
					return;
				}	
				q.push(xd);
			}
		}
	}
	cout<<"-1";
}
int main()
{
	int i,j;
	cin>>n>>m;
	for(i=1;i<=n;i++) for(j=1;j<=m;j++){
		cin>>mp[i][j];
		if(mp[i][j]=='2') qd.x=i,qd.y=j;
		if(mp[i][j]=='3') zd.x=i,zd.y=j;
	} 	
	q.push(qd);
	bfs();
	return 0;
}
2025/1/12 08:45
加载中...