定义一个二维数组,关于这个数组,请问怎么去解决呢,有没有人可以帮我看看怎么做
1条回答 默认 最新
关注 #include<iostream> #include<vector> using namespace std; int N, M; //分别代表行和列 vector<vector<int>> maze;//迷宫矩阵 vector<vector<int>> path_temp;//存储当前路径,第一维表示位置 vector<vector<int>> path_best;//存储最佳路径 void MazeTrack(int i, int j) { maze[i][j] = 1;//表示当前节点已走,不可再走 path_temp.push_back({ i, j });//将当前节点加入到路径中 if (i == N - 1 && j == M - 1) //判断是否到达终点 if (path_best.empty() || path_temp.size() < path_best.size()) path_best = path_temp; if (i - 1 >= 0 && maze[i - 1][j] == 0)//探索向上走是否可行 MazeTrack(i - 1, j); if (i + 1 < N && maze[i + 1][j] == 0)//探索向下走是否可行 MazeTrack(i + 1, j); if (j - 1 >= 0 && maze[i][j - 1] == 0)//探索向左走是否可行 MazeTrack(i, j - 1); if (j + 1 < M && maze[i][j + 1] == 0)//探索向右走是否可行 MazeTrack(i, j + 1); maze[i][j] = 0; //恢复现场,设为未走 path_temp.pop_back(); } int main() { while (cin >> N >> M) { maze = vector<vector<int>>(N, vector<int>(M, 0)); path_temp.clear(); path_best.clear(); for (auto &i : maze) for (auto &j : i) cin >> j; MazeTrack(0, 0);//回溯寻找迷宫最短通路 for (auto i : path_best) cout << '(' << i[0] << ',' << i[1] << ')' << endl;//输出通路 } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊