深搜的剪枝技巧(一)——树的划分(可行性剪枝、上下界剪枝)
本系列的开篇之作,先介绍一下剪枝的概念
一、什么是剪枝
- 搜索的进程可以看成是从树根出发,遍历一颗倒置的树——搜索树的过程。剪枝就是通过某种判断,避免一些不必要的遍历过程
二、剪枝的原则
- 正确性
- 准确性
- 高效性
三、 深度优先搜索的优化技巧
- 优化搜索顺序
- 排除等效冗余
- 可行性剪枝
- 最优性剪枝
- 记忆化
四、树的划分(可行性剪枝、上下界剪枝)
问题描述——将整数 n 划分成 k 份,且每份不能为空,问有多少种不同的分法?当 n = 7,k = 3 时,下面三种分法被认为是相同的,1,1,5;1,5,1;5,1,1。
输入格式——输入文件只有一行,为两个整数 n 和 k(