将整数 n 分成 k 份,且每份不能为空,任意两个方案不能相同(不考虑顺序)。
例如: n=7,k=3 ,下面三种分法被认为是相同的。
问有多少种不同的分法, 答案对 109 + 7 取模。
数据范围:
进阶:空间复杂度 ,时间复杂度
对于dp[i][j]代表i分为j份。分为以下两类:
function divideNumber( n , k ) { // write code here const dp = Array.from(new Array(n+1), ()=>new Array(k+1).fill(0)) dp[0][0] = 1 for (let i=1;i<=n;++i){ for (let j=1;j<=n;++j){ if ( i-j>=0){ dp[i][j]=dp[i-j][j]+dp[i-1][j-1]; } } } return dp[n][k] }