前置知识: 讲解038-经典递归过程解析 讲解043-根据数据量猜解法 讲解062-宽度优先遍历及其扩展 讲解059~讲解065都是【必备】课程有关图的内容,建议从头开始学习
双向广搜常见用途1:小优化
bfs的剪枝策略,分两侧展开分支,哪侧数量少就从哪侧展开
双向广搜常见用途2:重要!本体!用于解决特征很明显的一类问题
特征:全量样本不允许递归完全展开,但是半量样本可以完全展开 过程:把数据分成两部分,每部分 各自展开 计算结果,然后设计两部分结果的 整合逻辑
题目1
单词接龙 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk : 每一对相邻的单词只差一个字母。 对于 1 <= i <= k 时,每个 si 都在 wordList 中 注意, beginWord 不需要在 wordList 中。sk == endWord 给你两个单词 beginWord 和 endWord 和一个字典 wordList 返回 从 beginWord 到 endWord 的 最短转换序列 中的 单词数目 如果不存在这样的转换序列,返回 0 。 测试链接 : https://leetcode.cn/problems/word-ladder
题目2
零食问题 & 世界冰球锦标赛 牛牛准备参加学校组织的春游, 出发前牛牛准备往背包里装入一些零食, 牛牛的背包容量为w 牛牛家里一共有n袋零食, 第i袋零食体积为v[i] 牛牛想知道在总体积不超过背包容量的情况下 一共有多少种零食放法(总体积为0也算一种放法) 数据量描述: 1 <= n <= 40, 1 <= w <= 2 * 10^9, 0 <= v[i] <= 10^9 测试链接 : https://www.nowcoder.com/practice/d94bb2fa461d42bcb4c0f2b94f5d4281 测试链接 : https://www.luogu.com.cn/problem/P4799
题目3
最接近目标值的子序列和 给你一个整数数组 nums 和一个目标值 goal 你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal 也就是说,如果子序列元素和为 sum ,你需要 最小化绝对差 abs(sum - goal) 返回 abs(sum - goal) 可能的 最小值 注意,数组的子序列是通过移除原始数组中的某些元素(可能全部或无)而形成的数组。 数据量描述: 1 <= nums.length <= 40 -10^7 <= nums[i] <= 10^7 -10^9 <= goal <= 10^9 测试链接 : https://leetcode.cn/problems/closest-subsequence-sum
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com