社区讨论

84分求条

P2802回家参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhjdslrl
此快照首次捕获于
2025/11/04 00:55
4 个月前
此快照最后确认于
2025/11/04 00:55
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxn=10;
int n,m,a[maxn][maxn],vis[maxn][maxn],way[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
struct stu{
	int x,y,step,h;
};
queue<stu> q;
inline void bfs(){
	while(q.size()){
		int x=q.front().x;
		int y=q.front().y;
		int s=q.front().step;
		int h=q.front().h;
		if(a[x][y]==3){
			cout<<s;
			return;
		}
		q.pop();
		for(int i=0;i<4;i++){
			int nx=x+way[i][0];
			int ny=y+way[i][1];
			if(nx<1 || nx>n || ny<1 || ny>m || vis[nx][ny]==1 || a[nx][ny]==0 || h<=1){
				continue;
			}
			if(a[nx][ny]==4){
				q.push({nx,ny,s+1,6});
			}else{
				q.push({nx,ny,s+1,h-1});
			}
			vis[nx][ny]=1;
		}
	}
	cout<<-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){
				q.push({i,j,0,6});
				vis[i][j]=1;
			}
		}
	}
	bfs();
	return 0;
} 

回复

2 条回复,欢迎继续交流。

正在加载回复...