将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。由于数据较大,输出Mod 10^9 + 7的结果即可。
Input
输入1个数N(1 <= N <= 50000)。
Output
输出划分的数量Mod 10^9 + 7。
Input示例
6
Output示例
4
都说这是一道经典的dp,我竟然不知道,真是太弱了。
首先我们发现把一个<=50000的N分成不同的整数最多只能分出三百多个。
我们考虑用dp[i][j]表示把i分成j个不同的数的方案数。
1、分出来的数没有1: dp[i-j][j] (相当于把i-j分成j份的所有的数+1)
2、分出来的数有1: dp[i-j][j-1]
所以dp[i][j]=dp[i-j][j]+dp[i-j][j-1]
真是玄妙。