这个问题可以转化为一个动态规划问题。与完全背包问题不同,完全背包中每个物品可以选多次,而本题中每个数字只能选一次(因为要求严格递减),因此更类似于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