社区讨论
样例过了提交wa求助
AT_dfs_a深さ優先探索参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo8821ht
- 此快照首次捕获于
- 2023/10/27 14:18 2 年前
- 此快照最后确认于
- 2023/10/27 14:18 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
int n;
int m;
array <array <int, 505>, 505> a;
bool ifarrive;
int sn;
int sm;
inline void init()
{
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
char tmp;
cin >> tmp;
if (tmp == 's')
{
sn = i;
sm = j;
}
a[i][j] = tmp;
}
}
}
inline bool check(int r, int c)
{
if (r < 0 || c < 0 || r >= n || c >= n || a[r][c] < 40)
{
return 0;
}
return 1;
}
void dfs(int r, int c)
{
if (a[r][c] == 'g')
{
ifarrive = true;
return;
}
a[r][c] -= 200;
if (check(r - 1, c))
{
dfs(r - 1, c);
}
if (check(r + 1, c))
{
dfs(r + 1, c);
}
if (check(r, c + 1))
{
dfs(r, c + 1);
}
if (check(r, c - 1))
{
dfs(r, c - 1);
}
a[r][c] += 200;
}
signed main(signed argc, char **argv)
{
init();
dfs(sn, sm);
if (ifarrive)
{
printf("Yes");
}
else
{
printf("No");
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...