一、回溯法基础知识

1. 概念

  略


二、回溯法知识扩展

1. 集合的组合、排列

知识扩展

  略

题目练习

Ⅰ:所有子集
题目描述

  输入一个不含重复数字的数据集合,请找出它的所有子集。例如,数据集合 [1,2] 有 4 个子集,分别是 []、[1]、[2] 和 [1, 2]。

题目分析

难度:
思路:

参考代码

Tips:-

Ⅱ:包含k个元素的组合
题目描述

  输入 n 和 k ,请输出从 1 到 n 中选取 k 个数字组成的所有组合。例如,如果 n 等于 3,k 等于2,将组成3个组合,分别是 [1,2]、 [1,3] 和 [2,3]。

题目分析

难度:
思路:

参考代码

Tips:-

Ⅲ:允许重复选择元素的组合
题目描述

  给定一个没有重复数字的正整数集合,请找出所有元素之和等于某个给定值的所有组合。同一个数字可以在组合中出现任意次。例如,输入整数集合 [2,3,5],元素之和等于 8 的组合有 3 个,分别是 [2,2,2,2]、[2,3,3] 和 [3,5]。

题目分析

难度:
思路:

参考代码

Tips:-

Ⅳ:包含重复元素集合的组合
题目描述

  给定一个可能包含重复数字的整数集合,请找出所有元素之和等于某个给定值的所有组合。输出中不得包含重复的组合。例如,输入整数集合 [2,2,2,4,3,3],元素之和等于 8 的组合有 2 个,分别是 [2,2,4] 和 [2,3,3]。

题目分析

难度:
思路:

参考代码

Tips:-

Ⅴ:没有重复元素集合的全排列
题目描述

  给定一个没有重复数字的集合,请找出它的所有全排列。例如,集合 [1,2,3] 有 6 个全排列,分别是 [1,2,3]、[1,3,2]、[2,1,3]、[2,3,1]、[3,1,2] 和 [3,2,1]。

题目分析

难度:
思路:

参考代码

Tips:-

Ⅵ:包含重复元素集合的全排列
题目描述

  给定一个包含重复数字的集合,请找出它的所有全排列。例如,集合 [1,1,2] 有 3 个全排列,分别是 [1,1,2]、[1,2,1] 和 [2,1,1]。

题目分析

难度:
思路:

参考代码

Tips:-

2. 其他类型问题

知识扩展

  略

题目练习

Ⅰ:生成匹配的括号
题目描述

  输入一个正整数 n ,请输出所有包含 n 个左括号和 n 个右括号的组合,要求每个组合的左括号和右括号匹配。例如,当 n 等于 2 时,有两个符合条件的括号组合,分别是 (()) 和 ()()。

题目分析

难度:
思路:

参考代码

Tips:-

Ⅱ:分割回文子字符串
题目描述

  输入一个字符串,要求将它分割成若干子字符串,使每个子字符串都是回文。请列出所有可能的分割方法。例如,输入 "google",将输出 3 种符合条件的分割方法,分别是 ["g","o","o","g","l","e"]、["g","oo","g","l","e"] 和 ["goog","l","e"]。

题目分析

难度:
思路:

参考代码

Tips:-

Ⅲ:恢复 IP 地址
题目描述

  输入一个只包含数字的字符串,请列出所有可能恢复出来的 IP 地址。例如,输入字符串 "10203040",可能恢复出 3 个IP地址,分别为 "10.20.30.40"、"102.0.30.40" 和 "10.203.0.40"。

题目分析

难度:
思路:

参考代码

Tips:-

三、章节小结

  略