社区讨论
dfs求调
P1238走迷宫参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lvhhf0gk
- 此快照首次捕获于
- 2024/04/27 10:27 2 年前
- 此快照最后确认于
- 2024/04/27 12:23 2 年前
为什么没有输出啊啊啊
CPP#include <iostream>
using namespace std;
int n, m;
int sx, sy, ex, ey, step;
int a[15 + 5][15 + 5], mp[15 + 5][15 + 5] = {0};
int x_[5] = {0, -1, 0, 1};
int y_[5] = {-1, 0, 1, 0};
int ans[5000][3];
void dfs(int x1, int x2, int y1, int y2, int m, int n)
{
if(x1 == x2 && y1 == y2) //到终点了
{
for(int i = 0; i < step; i++)
{
cout << "(" << ans[i][0] << "," << ans[i][1] << ")" << "->";
}
cout << "(" << x2 << "," << y2 << ")" << endl;
return ;
}
for(int i = 0; i < 4; i++)
{
int dx = x1 + x_[i];
int dy = y1 + y_[i];
if(mp[dx][dy] != 1 /*没有障碍*/ && dx != x1 && dy != y1 /*不在起点*/ && dx <= m && dy <= n /*没有越界*/ && a[dx][dy] != 1 /*没有经过*/)
{
a[dx][dy] = 1; //标记为经过
// cout << "(" << dx << "," << dy << ")" << "->";
ans[step][0] = dx;
ans[step][1] = dy;
dfs(dx, dy, x2, y2, m, n); //继续搜索
a[dx][dy] = 0;
}
}
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);// 关闭同步流
cin >> m >> n;
for(int i = 1; i <= m; i++)
{
for(int j = 1; j <= n; j++)
{
cin >> a[i][j];
}
}
cin >> sx >> sy;
cin >> ex >> ey;
for(int i = 1; i <= m; i++)
{
for(int j = 1; j <= n; j++)
{
if(a[i][j] == 0)
{
mp[i][j] = 1;
}
}
}
dfs(sx, ex, sy, ey, m, n);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...