DFS 为图论中的概念,详见 DFS(图论) 页面。在 搜索算法 中,该词常常指利用递归函数方便地实现暴力枚举的算法,与图论中的 DFS 算法有一定相似之处,但并不完全相同。

把正整数 分解为 个不同的正整数,如 ,排在后面的数必须大于等于前面的数,输出所有方案。

对于这个问题,如果不知道搜索,应该怎么办呢?

那如果是分解成四个整数呢?再加一重循环?

该类搜索算法的特点在于,将要搜索的目标分成若干“层”,每层基于前几层的状态进行决策,直到达到目标状态。

考虑上述问题,即将正整数 分解成小于等于 个正整数之和,且排在后面的数必须大于等于前面的数,并输出所有方案。

设一组方案将正整数 分解成 个正整数 的和。

我们将问题分层,第 层决定 。则为了进行第 层决策,我们需要记录三个状态变量: ,表示后面所有正整数的和;以及 ,表示前一层的正整数,以确保正整数递增;以及 ,确保我们最多输出 个正整数。

代码如下: