JZ12 矩阵中的路径

这篇具有很好参考价值的文章主要介绍了JZ12 矩阵中的路径。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

剑指Offer编程链接:JZ12

题目描述:
JZ12 矩阵中的路径,秋招,矩阵,线性代数
思路:递归+回溯的方法,总结一下什么情况需要使用递归:

递归在解决问题时,通常涉及以下情况:

  1. 问题可被分解为较小的相似子问题。
  2. 子问题与原问题具有相同的结构,只是规模更小。
  3. 每个子问题的解可以通过递归调用来获得。
  4. 存在基本情况,当问题足够小时可以直接求解。

递归适用于许多问题,如数学运算(如阶乘、斐波那契数列)、树结构遍历、图算法、字符串处理等。然而,使用递归时要注意合适的终止条件和避免出现无限递归。

具体做法:
step 1:优先处理矩阵为空的特殊情况。
step 2:设置flag数组记录某一次路径中矩阵中的位置是否被经过,因此一条路径不能回头。
step 3:遍历矩阵,对每个位置进行递归。
step 4:递归查找的时候,到了矩阵的边界或者是下一个字符与这个位置的字符不匹配,或者节点已经访问过了,或者字符串匹配完成都结束递归。
step 5:访问节点,修改flag数组,向其他四个方向延伸,回溯的时候修改flag数组。

代码:文章来源地址https://www.toymoban.com/news/detail-693810.html

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param matrix char字符型二维数组 
     * @param word string字符串 
     * @return bool布尔型
     */
    //i代表数组行,j代表列,matrix代表矩阵,n*m 矩阵,word代表要匹配的字符串,k代表当前第几个字符
    private boolean dfs(char[][] matrix,int n,int m,int i,int j,String word,int k,boolean[][] flag){
        //下标越界、字符不匹配、已经遍历过不能重复
        if(i<0||i>=n||j<0||j>=m||(matrix[i][j]!=word.charAt(k))||(flag[i][j]==true)){
            return false;
        }
        if(k==word.length()-1){
            return true;
        }
        flag[i][j] = true;
        //该结点四个方向
        if(dfs(matrix,n,m,i-1,j,word,k+1,flag)||dfs(matrix,n,m,i+1,j,word,k+1,flag)||dfs(matrix,n,m,i,j-1,word,k+1,flag)||dfs(matrix,n,m,i,j+1,word,k+1,flag)){
            return true;
        }
        //此格未被占用
        flag[i][j] = false;
        return false;
    }
    public boolean hasPath (char[][] matrix, String word) {
        // write code here
        if(matrix.length == 0){
            return false;
        }
        int n = matrix.length;
        int m = matrix[0].length;
        boolean[][] flag = new boolean[n][m];
        for(int i = 0;i<n;i++){
            for(int j = 0;j<m;j++){
                if(dfs(matrix,n,m,i,j,word,0,flag)){
                    return true;
                }
            }
        }
        return false;
    }
}

到了这里,关于JZ12 矩阵中的路径的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能中的线性代数与矩阵论学习秘诀之著名教材

    线性代数是大学数学中非常核心的基础课程,教材繁多,国内外有许多经典的教材。 国内比较有名且使用较为广泛的线性代数中文教材见书籍 8。 书籍 8 线性代数中文教材推荐: (a) 简明线性代数 (丘维声); (b) 线性代数 (居于马); (c) 线性代数 (李尚志); (d) 线性代数 (李炯生 等

    2024年01月20日
    浏览(34)
  • 线性代数:为什么所有3x3对称矩阵构成的向量空间是6维的?(mit第11讲中的疑问)

    对应mit线性代数第11讲矩阵空间,秩1矩阵,小世界图第6-7分钟的讲解问题:3x3对称矩阵构成的向量空间为什么是6维的 看了一些资料,发现这个国外的大哥讲得清楚 https://math.stackexchange.com/questions/2813446/what-is-the-dimension-of-the-vector-space-consisting-of-all-3-by-3-symmetric-mat 转成中文后如

    2024年02月03日
    浏览(38)
  • 线性代数本质系列(一)向量,线性组合,线性相关,矩阵

    本系列文章将从下面不同角度解析线性代数的本质,本文是本系列第一篇 向量究竟是什么? 向量的线性组合,基与线性相关 矩阵与线性相关 矩阵乘法与线性变换 三维空间中的线性变换 行列式 逆矩阵,列空间,秩与零空间 克莱姆法则 非方阵 点积与对偶性 叉积 以线性变换

    2024年02月04日
    浏览(42)
  • 线性代数:线性方程求解、矩阵的逆、线性组合、线性独立

    本文参考www.deeplearningbook.org一书第二章2.3 Identity and Inverse Matrices 2.4 Linear Dependence and Span 本文围绕 线性方程求解 依次介绍矩阵的逆、线性组合、线性独立等线性代数的基础知识点。 本文主要围绕求解线性方程展开,我们先把线性方程写出来,方程如下: 其中,是已知的;,

    2024年02月08日
    浏览(38)
  • 0203逆矩阵-矩阵及其运算-线性代数

    定义7 对于 n n n 阶矩阵A,如果有一个 n n n 阶矩阵B,使 A B = B A = E AB=BA=E A B = B A = E 则说矩阵A是可逆的,并把矩阵B称为A的逆矩阵,简称逆阵。 定理1 若矩阵A可逆,则 ∣ A ∣ ≠ 0 vert Avert not = 0 ∣ A ∣  = 0 证明: A 可逆,即有 A − 1 ,使得 A A − 1 = E ∣ A A − 1 ∣ = ∣ A

    2024年04月13日
    浏览(47)
  • 线性代数3:矩阵

    目录 矩阵研究的是什么呢? 逆阵 什么叫做逆阵?  例题1:  例题2:  逆阵的存在性 定理1: 定理2: 定理3: 定理4: 拉普拉茨方程 方阵可以的条件  例题3:  Note1: 例题4  Note2:  Note3: Note4:  Note5:  Note6: Note7:  例题5:  逆矩阵的求法: 方法1:伴随矩阵法:  方

    2024年02月13日
    浏览(43)
  • 线性代数(七) 矩阵分析

    从性线变换我们得出,矩阵和函数是密不可分的。如何用函数的思维来分析矩阵。 通过这个定义我们就定义了矩阵序列的 收敛性 。 研究矩阵序列收敛性的常用方法,是用《常见向量范数和矩阵范数》来研究矩阵序列的极限。 长度是范数的一个特例。事实上,Frobenius范数对

    2024年02月08日
    浏览(40)
  • 线性代数-矩阵的本质

    线性代数-矩阵的本质

    2024年02月11日
    浏览(36)
  • 投影矩阵推导【线性代数】

    如果两个向量垂直,那么满足。但如果两个向量不垂直,我们就将 b 投影到 a 上,就得到了二者的距离,我们也称为向量 b 到直线 a 的误差。这样就有出现了垂直:                (1) 投影向量 p 在直线上,不妨假设  ,那么误差 。带入式(1)中得到: 投影矩阵:  

    2024年02月06日
    浏览(47)
  • 线性代数:矩阵的定义

    目录 一、定义 二、方阵 三、对角阵 四、单位阵 五、数量阵  六、行(列)矩阵  七、同型矩阵 八、矩阵相等 九、零矩阵 十、方阵的行列式

    2024年01月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包