社区讨论
44pts
P2802回家参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mikdfw7d
- 此快照首次捕获于
- 2025/11/29 22:13 3 个月前
- 此快照最后确认于
- 2025/12/01 19:30 3 个月前
CPP
#include<bits/stdc++.h>
#define ag a[g.ix + dis[i][0]][g.iy + dis[i][1]]
//#define ll long long
//#define sizee (/*num*/)
using namespace std;
int n,m,a[11][11],bx,by;
bool vis[11][11];
int dis[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
struct ig{
int ix;
int iy;
int hp;
int step;
};
queue<ig> q;
void bfs(){
while(!q.empty()){
ig g = q.front();
q.pop();
if(a[g.ix][g.iy] == 4) g.hp = 6;
if(a[g.ix][g.iy] == 3){
cout << g.step << endl;
return ;
}
if(g.hp == 1) break;
for(int i = 0;i <= 3;++i){
if(ag != 0){
q.push(ig{g.ix + dis[i][0],g.iy + dis[i][1],g.hp - 1,g.step + 1});
vis[g.ix + dis[i][0]][g.iy + dis[i][1]] = true;
}
}
}
cout << -1 << endl;
return ;
}
signed main(){
cin.tie(0)->sync_with_stdio(0);
//freopen("example.in","r",stdin);
//freopen("example.out","w",stdout);
cin >> n >> m;
for(int i = 1;i <= n;++i){
for(int j = 1;j <= n;++j){
cin >> a[i][j];
if(a[i][j] == 2){
bx = i,by = j;
}
}
}
q.push(ig{bx,by,6,0});
vis[bx][by] = true;
bfs();
return 0;
}
/*
*/
我只想知道我错哪了,不想要代码,回复记得@我一下,谢谢
回复
共 2 条回复,欢迎继续交流。
正在加载回复...