将 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,就把这个