求调(玄关
  • 板块题目总版
  • 楼主zhuoheng
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/10/17 22:26
  • 上次更新2023/11/2 13:09:30
查看原帖
求调(玄关
1023698
zhuoheng楼主2023/10/17 22:26
#include<iostream>
#include<queue> 
using namespace std;
struct node{
	int x=0,y=0,hp=0;
};
int n,m,a[10][10];
int vis[10][10];
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int zx,zy;
queue<node>q;
node be;
void bfs(){
	q.push(be);
	while(!q.empty()){
		node tmp=q.front();
		if(tmp.x==zx&&tmp.y==zy){
			printf("%d",vis[tmp.x][tmp.y]);
			return ;
		}
		if(a[tmp.x][tmp.y]==4)tmp.hp=6;
		for(int i=0;i<4;i++){
			node kk=tmp;
			kk.x+=dx[i];
			kk.y+=dy[i];
			kk.hp--;
			if(kk.x<=n && kk.x>0 && kk.y<=m && kk.y>0 && !vis[kk.x][kk.y] && a[kk.x][kk.y] && kk.hp){
				vis[kk.x][kk.y]=vis[tmp.x][tmp.y]+1;
				q.push(kk);
			}
		}
	}
	puts("-1");
}
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]==2)be.x=i,be.y=j,be.hp=6;
			if(a[i][j]==3)zx=i,zy=j;
		}
	bfs();
}

死循环了

2023/10/17 22:26
加载中...