编程题—矩阵中的路径

使用递归函数在矩阵中寻找路径 使用回溯法求解迷宫问题,在这个程序中使用的是递归算法 立即下载

题目链接

题目描述

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如
在这里插入图片描述
矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。

解题思路
1、首先遍历第一个字母,比如对于bcced来说,先找到第一个b,然后接下来再递归找c
2、若bcced中的字母全部可以找到,则成功
3、若某个字母不匹配,则返回false即可
4、注意在遍历的时候需要将已经遍历过的位置做标记,我是直接将遍历过的字符置为1
通过代码
public class Solution {
  public boolean hasPath(char[] matrix, int rows, int cols, char[] str)
  {
  	char [][] matrix1= new char[rows][cols];
  	int k=0;
  	for(int i=0;i<rows;i++)
  		for(int j=0;j<cols;j++) {
  			matrix1[i][j]=matrix[k];
  			k++;
  		}
  	boolean res=false;
  	for(int i=0;i<rows;i++) {
  		for(int j=0;j<cols;j++) {
  			if (matrix1[i][j]==str[0]) {
  				char[][] matrixFlag=new char[rows][cols]; 				
  				for(int p=0;p<rows;p++)
  		    		for(int q=0;q<cols;q++) {
  		    			matrixFlag[p][q]=matrix1[p][q];
  		    		}
  				char[] strFlag=new char[str.length];
  				for(int p=0;p<str.length;p++)
  					strFlag[p]=str[p];
  				if (isNot(matrixFlag,rows,cols,strFlag,i,j)) return true;
  				else continue;
  			}
  		}
  	}
  	return res;
  
  }
  public boolean isNot(char[][] matrix, int rows, int cols, char[] str,int x,int y) {
  	if (x<0||x>rows-1||y<0||y>cols-1||matrix[x][y]!=str[0]) return false;
  	else if((matrix[x][y]==str[0])&&(str.length==1)) return true;
  	else {
  		char [] str1=new char[str.length-1];
  		for(int i=1,j=0;i<str.length;i++,j++) {
  			str1[j]=str[i];
  		}
  		matrix[x][y]='1';
  		return isNot(matrix, rows, cols, str1, x+1, y)||
  				isNot(matrix, rows, cols, str1, x-1, y)||
  				isNot(matrix, rows, cols, str1, x, y+1)||
  				isNot(matrix, rows, cols, str1, x, y-1);
  	}
  }
  
}
基于STM32F407与AD9910/AD9959的高频可调DDS信号源设计与实战 本文详细介绍了基于STM32F407微控制器与AD9910/AD9959高性能DDS芯片的高频可调信号源设计与实现。文章从DDS原理入手,阐述了双芯片方案的优势,并重点分享了高频电路设计中的电源、PCB布局布线等关键硬件设计技巧与避坑指南。同时,提供了通过SPI配置DDS芯片及利用Matlab生成任意波形的软件驱动方法,旨在帮助开发者打造一个覆盖10Hz至4200MHz的实用信号发生器。 阅读详情

相关推荐

ISA-95(S95)标准详解

ISA-95是制造业系统集成的“通用语言”,通过分层模型和信息流规范,打通企业计划层与设备控制层,成为实现数字化工厂的核心标准之一。其与ISA-88的协同应用,可进一步优化生产执行与资源管理的效率。标准,旨在解决企业商业系统(如ERP)与工业控制系统(如MES、SCADA)之间的集成问题。

「东哥说MES」 专注于MES制造执行系统,为你拆解核心架构、功能模块及与ERP/PLC的集成逻辑。提供从入门到精通的系列干货、精选行业报告与实用工具,构建你的数字化知识体系,关注我,用实战经验照亮你的数字化之路。 3737

剑指Offer(65):矩阵中的路径

一、题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为...

胖虎的博客 355

kettle9.0+ 连接Hadoop报错

kettle bug

x²+(y-√³x²)²=1的博客 1559

编程题:矩阵中的路径

题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...

chengtutu的博客 543

基于simulink的电动汽车电机驱动系统IGBT开路故障检测

本文介绍了基于Simulink的电动汽车电机驱动系统IGBT开路故障检测方法。通过搭建永磁同步电机(PMSM)驱动系统模型,实现IGBT开路故障注入,并设计基于电流平均值与PWM逻辑比较的故障检测算法。系统可实时采集三相电流信号,通过MATLAB Function模块实现故障诊断,当检测到PWM信号与电流不匹配时输出故障报警。仿真结果显示,系统能在2.05秒内准确识别A相上管开路故障,并通过Scope和XYGraph直观展示故障特征。该方法为电动汽车电力电子系统故障诊断与容错控制提供了实用解决方案,后续可扩

xiaoheshang_123的博客 149

【置顶】TEE从入门到精通-[目录]

此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...

baron-周贺贺-代码改变世界ctw 6423

编程练习题:矩阵中的路径

矩阵中的路径 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[abcesfcsadee]\left[\begin{matrix} a & b & c &e \\ s & f & c &s\\ a & d & e & e \end{matri

real_coding的博客 343

【AI大模型应用开发实战】大型语言模型评估指南白皮书(LLM Eval)

近年来,大型语言模型(LLM)在自然语言处理领域取得了重大进展,例如 GPT-3 和 Chat-GPT。这些模型经过大型数据集的训练,在文本相关任务中表现出卓越的能力,甚至超越了人类。本文将简要介绍如何验证 LLMs 性能的评估指标。自然语言处理(NLP)是人工智能的一个领域,涉及计算机和人类语言之间的交互。NLP 的基本任务之一是语言建模 (LM),它涉及构建统计模型来分析和生成自然语言。LM 已成为推进机器语言智能的关键方法,使机器能够执行机器翻译、情感分析和对话系统等任务。

AI天才研究院 1012

矩阵中的路径(思路与实现)

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串...

疯狂的1024 7266

SAP公司间STO业务解析(包含主数据解析、后台配置解析、前台业务演示)

SAP公司间STO业务解析

ww114784的博客 1016

26、电子测量与旋转编码器控制技术解析

本文深入解析了电子测量中的电感测量技术与旋转编码器的控制方法。介绍了LC电路振荡原理、滤波器类型及其应用,并通过代码实现了基于脉冲宽度的电感值计算。对比了陶瓷电容与电解电容在高频测量中的性能差异。在旋转编码器部分,详细阐述了其工作原理,提出了抖动问题和检测遗漏的解决方案,包括中断检测法和基于4位状态映射的高精度控制方法。文章还探讨了相关技术在电力系统、通信设备、工业自动化和智能家居中的应用,并展望了高精度、智能化、小型化和无线化的发展趋势,为电子系统设计提供了实用指导和技术参考。

elastic6hunter的博客 97

算法编程题: 矩阵的最小路径和

算法编程题: 矩阵的最小路径和 题目描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。 输入描述: 第一行输入两个整数 n 和 m,表示矩阵的大小。 接下来 n 行每行 m 个整数表示矩阵。 输出描述: 输出一个整数表示答案。 示例1 输入 4 4 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 输出 12 备注: 1 \leq n, m \leq 20001≤n,m≤2000

weixin_43368548的博客 920

手把手教你学PCIE(10.5)--PCIE故障排除方法的分步排查法介绍

通过以上分步排查法,你可以系统地诊断和解决 PCIe 设备的故障。每个步骤都有助于逐步缩小问题范围,最终找到并解决问题。

MHD0815的博客 1871

剑指Offer_编程题 (矩阵中的路径 / 机器人的运动范围)

剑指Offer_编程题 65、矩阵中的路径 时间限制:1秒 空间限制:32768K 热度指数:228169 题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d...

DeathYmz的博客 684

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【编程题】矩阵中的路径(java实现)

【编程题】矩阵中的路径(java实现) 题目来源 剑指offer https://www.nowcoder.com/practice/c61c6999eecb4b8f88a98f66b273a3cc?tpId=13&tqId=11218&rp=4&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-...

qq_40432108的博客 602

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

编程题-矩阵中的路径

编程题-矩阵中的路径题目解析c#代码 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 ​ 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 示例1 输入 “ABCESFCSADEE”,3,4,“ABCC

qq_44512151的博客 271

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java矩阵最小路径和_[编程题] nk: [矩阵的最小路径和]

[编程题] nk: 矩阵的最小路径和题目输入输出Java代码(动态规划)import java.util.Scanner;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[...

weixin_39611031的博客 150

编程题_剑指offer12_矩阵中的路径

剑指offer12_矩阵中的路径 java解

xklx_z的博客 190

【Java】剑指Offer_编程题_矩阵中的路径

题目链接:https://www.nowcoder.com/questionTerminal/c61c6999eecb4b8f88a98f66b273a3cc 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。...

includei的博客 207

329. 矩阵中的最长递增路径c_剑指Offer_编程题——矩阵中的路径

题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字符串的第一个字符b占据...

weixin_39542043的博客 181

牛客网-剑指offer[编程题]矩阵中的路径 js详解

回溯法 按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯;否则,进入该子树,继续按深度优先策略搜索。 回溯法的基本行为是搜索,搜索过程使用剪枝函数来为了避免无效的搜索。剪枝函数包括两类:1. 使用约束函数,剪去不满足约束条件的路径...

kotoriyou的博客 348

矩阵中的路径

剑指OFFER题55------按牛客网通过率排序 时间:2019.1.10.1924 作者:Waitt 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e ...

Waitt_的博客 641

java的两个回溯算法编程题

此篇是在牛客网中剑指offer经过测试的两个关于回溯算法的编程题。并不都是自己写的,有见解大神的思路。 机器人的活动范围 矩阵中的路径 1. 机器人的运动范围 题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+...

Mary~fighting的博客 205

Leetcode刷题java之329. 矩阵中的最长递增路径(一天一道编程题之五十天)

执行结果: 通过 显示详情 执行用时 :11 ms, 在所有 Java 提交中击败了73.70% 的用户 内存消耗 :39.7 MB, 在所有 Java 提交中击败了53.41%的用户 题目: 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入: nums =...

逆水行舟,不进则退 465

leetcode329. 矩阵中的最长递增路径

题目描述: 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。 示例 1: 输入:matrix = [[9,9,4],[6,6,8],[2,1,1]] 输出:4 解释:最长递增路径为 [1, 2, 6, 9]。 示例 2: 输入:matrix = [[3,4,5],[3,2,6],[2,2,1]] 输出:4 解释:最长递增路径是 [3, 4, 5, 6]

weixin_42051691的博客 225

​LeetCode解法汇总1091. 二进制矩阵中的最短路径

然后在从list集合中的节点触发,找到所有可能达到的节点,这些节点就是2步可以达到的,就这样遍历下去。* 从尾节点开始,先找到所有走一步可以达到的节点,放入集合list。如果不存在这样的路径,返回。二进制矩阵中的 畅通路径 是一条从。* 最终遍历到头节点时,流程结束。是该路径途经的单元格总数。)到 右下角 单元格(即,

分享+记录 1023
上一篇: 编程题—机器人的运动范围
下一篇: 算法题—leetcode328:奇偶链表
code_AC
博客等级 码龄12年 255粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值