一个正整数可以划分为多个正整数的和,比如n=3时:
3;1+2;1+1+1;
我们想要知道n的方案数就必须知道n-i的方案数,而n-i的方案数是多少呢?n-i可以取0~(n-i)个数,...,最后n=0时,只能取到一个数0,此时方案数为1.dp[i][j]表示数字 i 可以被拆分成不超过 j 的方案数,初始化dp[0][i]为1.当i>=j时有状态转移方程为:dp[i][j] = dp[i][j-1] + dp[i-j][j],当j>i时我们也只能取dp[i][i],因为i不可能被拆分成超过i的方案数.最后输出dp[n][n]即可知道数字n的拆分方案数.