华为机考:HJ43 迷宫问题

华为机考:HJ43 迷宫问题

描述

DFS

从迷宫入口开始进行dfs搜索,每次进入一个点,将其加入临时路径数组中,把该位改成0表示不能进入,然后依次搜索该位下、右、上、左四个方向的点,如果搜索的这个点可以进入则路径进入,如果四个方向都没有可以走的路表示此路不通,回溯------删去路径最后一个,重置该位为0. 找到横纵坐标都等于矩阵最后一位则表示找到路径,复制现有路径然后返回。

cpp 复制代码
#include<iostream>
#include<vector>
using namespace std;
vector<pair<int,int>> res;
void dfs(vector<vector<int>>& matrix, int n, int m, int i, int j, vector<pair<int,int>>& paths) {
	//在每次递归调用时,程序首先将当前位置 (i, j) 记录到 paths 中,并将该位置标记为已经访问过。然后检查是否到达终点 (n-1, m-1),如果到达终点则将路径保存到全局变量 res 中,并返回。
	paths.push_back(make_pair(i, j));
	matrix[i][j] = 1;  
	if (i == n - 1 && j == m - 1) {
		res = paths;
		return;
	}
	//向下、向右、向上、向左。对于每个方向,判断是否在迷宫范围内且可以通行(值为0),如果满足条件则递归调用 dfs 继续搜索。
	if (i + 1 < n && matrix[i + 1][j] == 0) { //下
		dfs(matrix, n, m, i + 1, j, paths);
	}
	if (j + 1 < m && matrix[i][j + 1] == 0) { //右
		dfs(matrix, n, m, i, j + 1, paths);
	}
	if (i - 1 >= 0 && matrix[i - 1][j] == 0) {  //上
		dfs(matrix, n, m, i - 1, j, paths);
	}
	if (j - 1 >= 0 && matrix[i][j - 1] == 0) {   //左
		dfs(matrix, n, m, i, j - 1, paths);
	}
	paths.pop_back();
	matrix[i][j] = 0;
}

int main()
{
	int n, m;
	while (cin >> n >> m) {
		vector<vector<int>> matrix(n, vector<int>(m,0));
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < m; ++j) {
				cin >> matrix[i][j];
			}
		}
		vector <pair<int, int >> paths;
		dfs(matrix, n, m, 0, 0, paths);
		for (int i = 0; i < res.size(); ++i) {
			cout << "(" << res[i].first << "," << res[i].second << ")" << endl;
		}
	}
	return 0;
}

华为机考:HJ43 迷宫问题

相关推荐
武子康25 分钟前
Qwen-Drive 到底是什么:4B 级 VLM 如何成为驾驶策略底座
人工智能·算法·机器学习
zh_xuan2 小时前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
机 _ 长2 小时前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
早起CaiCai3 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法
KevinChaos3 小时前
阳台小花园开发手记 01|HarmonyOS 7.0 互动卡片:小花园为何要两套界面
华为·harmonyos
梦里寻码3 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
猿人谷4 小时前
Surrogate Model:让进化算法学会“预测”,为什么它正在成为智能优化的重要技术?
后端·算法·架构
青少儿编程课堂5 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
程序猿追6 小时前
一个工程面向手机与二合一:HarmonyOS 6 部署配置和本地手记
华为·智能手机·harmonyos