社区讨论
求调,实在找不到错误在哪了
P1363幻象迷宫参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjtswf9
- 此快照首次捕获于
- 2025/11/04 08:23 4 个月前
- 此快照最后确认于
- 2025/11/04 08:23 4 个月前
CPP
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1505;
int n, m, bex, bey;
char a[N][N];
int dx[4] = {0, 0, -1, 1}, dy[4] = {-1, 1, 0, 0};
bool vis[N][N][3];
bool key;
void dfs(int x, int y, int rex, int rey) {
// if (key)
// return ;
int nowx = (x % n + n) % n, nowy = (y % m + m) % m;
if (a[nowx][nowy] == '#')
return ;
if (vis[nowx][nowy][0]) {
if (rex != vis[nowx][nowy][1] || rey != vis[nowx][nowy][2]) {
key = 1;
}
return ;
}
vis[nowx][nowy][0] = 1;
vis[nowx][nowy][1] = rex;
vis[nowx][nowy][2] = rey;
for (int i = 0; i < 4; i++) {
dfs(x + dx[i], y + dy[i], rex + dx[i], rey + dy[i]);
if (key)
return ;
}
}
int main() {
while (cin >> n >> m) {
memset(vis, 0, sizeof(vis));
memset(a, 0, sizeof(a));
key = 0;
for (int i = 0; i < n ; i++) {
string b;
cin >> b;
for (int j = 0; j < m ; j++) {
a[i][j] = b[j];
if (b[j] == 'S') {
bex = i;
bey = j;
}
}
}
dfs(bex, bey, bex, bey);
cout << (key ? "Yes" : "No") << endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...