当前位置: 首页 > article >正文

矩阵中的路径(dfs)-acwing

题目

23. 矩阵中的路径 - AcWing题库

代码

class Solution {
public:
    //以每一个坐标作为dfs起点
    bool hasPath(vector<vector<char>>& matrix, string str) {
        for (int i = 0; i < matrix.size(); i ++ )
            for (int j = 0; j < matrix[i].size(); j ++ )
                if (dfs(matrix, str, 0, i, j))
                    return true;
        return false;
    }
    //每一层搜索是否符合,一直搜索到底
    //u是递归深度
    bool dfs(vector<vector<char>> &matrix, string &str, int u, int x, int y) {
        if (matrix[x][y] != str[u]) return false; // 到该层不符合
        if (u == str.size() - 1) return true; //成功搜搜底,先判断符不符合
        //符合之后继续偏移
        int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
        //回退标记和存储
        char t = matrix[x][y];
        matrix[x][y] = '*'; // 已搜索
        for (int i = 0; i < 4; i ++ ) { // 每个点的四个搜索方向
            int a = x + dx[i], b = y + dy[i];
            if (a >= 0 && a < matrix.size() && b >= 0 && b < matrix[a].size()) { //偏移不出界
                if (dfs(matrix, str, u + 1, a, b)) return true; // 符合偏移条件开始搜索
            }
        }
        matrix[x][y] = t;//不符合回退
        return false;
    }
};


http://www.kler.cn/a/393930.html

相关文章:

  • CSS回顾-长度单位汇总详解
  • ios swift开发--ios远程推送通知配置
  • Java面向对象高级2
  • 【计算机网络】UDP网络程序
  • Django基础用法+Demo演示
  • WebGIS三维地图框架--Cesium
  • spring boot项目打成war包部署
  • 重构代码之用多态替代条件逻辑
  • 设计模式设计模式
  • 释放 PWA 的力量:2024 年的现代Web应用|React + TypeScript 示例
  • HarmonyOS App 购物助手工具的开发与设计
  • 曹操为什么总是亲征
  • 【杂记】之语法学习第四课手写函数与结构体
  • 人脸识别技术:从算法到深度学习的全面解析
  • 38.安卓逆向-壳-smali语法2(条件语句和for循环)
  • 前端Vue项目启动报错,出现spawn cmd ENOENT的原因以及解决方案
  • Springboot+thymeleaf结合Vue,通过thymeleaf给vue赋值解决Vue的SEO问题
  • 2024/11/13 英语每日一段
  • RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)
  • 攻防世界37-unseping-CTFWeb
  • 边缘计算在智能制造中的应用
  • 对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍
  • Javaweb—Ajax与jQuery请求
  • PostgreSQL 事务读取行 不使用行锁 真的? 利弊双刃剑
  • SpringBoot技术栈:构建高效共享汽车系统
  • PAT甲级 1097 Deduplication on a Linked List(25)