矩阵中的路径(回溯法)

这篇博客介绍了一种使用回溯法在给定的二维数组中找到符合特定移动要求的数字序列的方法。首先确定目标序列长度,然后从找到的第一个匹配数字开始,尝试探索其上下左右未访问的位置。如果找到与目标序列第二个数字匹配的元素,继续搜索,否则回溯。最终通过完整代码展示了解决方案。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在该项目中 假设给定了下图中的二维数组,按照上述移动要求找到一个符合的数字序列在这里插入图片描述
采用回溯法 ,首先给出目标序列的长度,定义一 个 长度计数单位(假定为 n) 每当按顺序找到了一个目标数字,n++ ,当n达到了目标序列的长度时,代表 已经 成功找到序列,返回成功

具体实现

首先需要找到入口点,即遍历整个数组 ,找到与序列第一个数字相同的位置,将这个位置传入find函数。
在find函数中 试图对 该位置的上下左右 (中没有被访问的位置) 进行查找 ,如果遇到在其上下左右 中发现了一个数字a 与目标序列中的第二位相同 ,即对该新发现的数字 进行上下左右的位置进行查找 ,直到完全查找结束,如果 a不能找到目标序列的第三位数字,那么对a进行回溯 ,将a置为 已访问 ,返回入口点 ,继续查找有没有 能够满足的 位置 ,依次推进

代码实现

寻找接入点 :

for(int i=0;i<4;i++) {
			for(int j=0 ;j<4;j++) {
			
			if(findpath(isvistied,0,i,j,index,x)) {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值