将
n
划分成若干正整数和
思路一:
用
- 很容易可以想到,在
i−1
的所有划分上添加个
1
,就得到了
i 含 1 的划分。
所以,方程为:
这样 f[n][1]+f[n][2]+f[n][3]+...+f[n][n] ,就是将 n 划分成若干正整数和的方案数。
思路二:
用
- 若划分中每个数都小于
j ,划分数为 f[i][j−1] 。 - 若划分中有数字等于
j
,就把这个
j 去掉, i−j 的每个划分上再加上这个 j 就是i 的划分, i−j 的划分数就是此时 i 的划分数。注意,最大值j 可能不止一个,此时的 i−j 的划分中有可能还有 j 。所以,划分为f[i−j][j] 。
所以,方程为: f[i][j]=f[i][j−1]+f[i−j][j] 。 f[n][n] 即为所求。
将 n 划分成不同正整数和
和上一问题的思路二极为相似。
用
- 若划分中每个数都小于
j ,划分数为 f[i][j−1] 。- 若划分中有数字等于
j
,就把这个
j 去掉, i−j 的每个划分上再加上这个 j 就是i 的划分, i−j 的划分数就是此时 i 的划分数。注意,因为此时剩下的i−j 的划分中不能再出现 j ,最大只能是j−1 ,因为每个数只能出现一次。所以,划分为 f[i−j][j−1] 。 所以,方程为: f[i][j]=f[i][j−1]+f[i−j][j−1] 。 f[n][n] 即为所求。
- 若划分中有数字等于
j
,就把这个