这个问题可以转化为一个动态规划问题。与完全背包问题不同,完全背包中每个物品可以选多次,而本题中每个数字只能选一次(因为要求严格递减),因此更类似于01背包问题。
定义dp[i][j]
表示使用前i
个数字(1到i)
组成和为j
的方案数。状态转移方程为:
i
,则方案数为dp[i-1][j]
i
,则方案数为dp[i-1][j-i]
(因为每个数字只能选一次)dp[i][j] = dp[i-1][j] + dp[i-1][j-i]
初始化条件:dp[0][0] = 1
一个正整数 n
可以表示成若干个正整数之和,形如:n = n1 + n2 + … + nk
,其中 n1 > n2 > … > nk, k ≥ 1
。
我们将这样的一种表示称为正整数 n
的一种划分。
现在给定一个正整数 n
,请你求出 n
共有多少种不同的划分方法。
共一行,包含一个整数n。
共一行,包含一个整数,表示总划分数量。 由于答案可能很大,输出结果请对109+7取模。
输入:
4
输出:
2
示例1一共2种:
4
3+1
输入:
6
输出:
4
示例2一共4种:
6
5+1
4+2
3+2+1