算法练习-回溯

今天开始新的章节,关于算法中回溯法的练习,这部分题目的难度还是比较大的,但是十分锻炼人的思维与思考能力。

处理这类题目首先要注意几个基本点:

1.关于递归出口的设置,这是十分关键的,要避免死循环的产生。

1.这是第一道题目

代码部分

这一道题很创新地引入了时间戳这一概念,这是用来记录节点关联问题之间的记录,可以通过时间戳来记录访问的顺序以此来统计在一个范围内节点的个数。

关于代码还有几个注意点:

1.关于mindfn的选用,将第一个开始记录的节点作为mindfn的首节点,这是为了防止第二个遍历开始,若访问到第一个环里面将无法构成一个完整的环状。

2.return 0不可以漏。

第二题

代码部分

第二道题是标准的dfs模型:

这里有几个注意点:

1.对于岛屿可以用scc颜色来染色以此来做相关标记。

2.注意(col[x][y]||mp[i][j]=='.')这里容易忽略col[x][y]这会造成遍历时左右两点来回横跳,造成影响。

好了今天的分享就到这里,希望大家可以多多关注哦。

相关推荐
好易学·数据结构8 小时前
可视化图解算法74:最小花费爬楼梯
数据结构·算法·leetcode·动态规划·力扣
Maỿbe8 小时前
力扣hot图论部分
算法·leetcode·图论
LYFlied8 小时前
【每日算法】LeetCode 78. 子集
数据结构·算法·leetcode·面试·职场和发展
月明长歌8 小时前
【码道初阶】【Leetcode606】二叉树转字符串:前序遍历 + 括号精简规则,一次递归搞定
java·数据结构·算法·leetcode·二叉树
子枫秋月8 小时前
C++字符串操作与迭代器解析
数据结构·算法
鹿角片ljp8 小时前
力扣234.回文链表-反转后半链表
算法·leetcode·链表
(●—●)橘子……8 小时前
记力扣1471.数组中的k个最强值 练习理解
数据结构·python·学习·算法·leetcode
oioihoii8 小时前
C++共享内存小白入门指南
java·c++·算法
Bruce_kaizy8 小时前
c++图论————图的基本与遍历
c++·算法·图论
l1t8 小时前
利用小米mimo为精确覆盖矩形问题C程序添加打乱函数求出更大的解
c语言·开发语言·javascript·人工智能·算法