社区讨论
站外提求助
灌水区参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m2kggjcq
- 此快照首次捕获于
- 2024/10/22 21:02 去年
- 此快照最后确认于
- 2025/11/04 16:30 4 个月前
这是题目,不知哪错了
CPP#include <bits/stdc++.h>
using namespace std;
int Map[45][45];
int n, m, qx, qy, zx, zy;
int head, tail = 1;
int x[45], y[45], pre[45];
int fxx[5] = {0, 0, 1, 0, -1};
int fxy[5] = {0, 1, 0, -1, 0};
void bfs() {
int find;
while (head < tail) {
head++;
for (int i = 1; i <= 4; i++) {
int dx = x[head] + fxx[i];
int dy = y[head] + fxy[i];
bool k = (dx >= 1 && dx <= n) && (dy >= 1 && dy <= m);
if (Map[dx][dy] == 0 && k) {
tail++;
x[tail] = dx;
y[tail] = dy;
pre[tail] = pre[head] + 1;
Map[dx][dy] = 1;
if (dx == zx && dy == zy) {
cout << "jl/n";
find = 1;
cout << pre[tail];
break;
}
}
}
if (find) {
break;
}
}
if (find == 0) {
cout << -1;
}
}
int main() {
for (int i = 0; i <= 44; i++) {
for (int j = 0; j <= 44; j++) {
Map[i][j] = 1;
}
}
char t;
// while (1) {
cin >> n >> m;
// if (n == 0 && m == 0) {
// break;
// }
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> t;
if (t == '@') {
qx = i;
qy = j;
}
if (t == '*') {
zx = i;
zy = j;
}
Map[i][j] = (t == '#' ? 1 : 0);
}
}
x[1] = qx;
y[1] = qy;
pre[1] = 0;
bfs();
// }
return 0;
}```
回复
共 1 条回复,欢迎继续交流。
正在加载回复...