整数划分问题
把n划分成k个正整数
设\(dp[i][j]\)表示把\(i\)划分成\(j\)个正整数的方案数
\[dp[i][j]=dp[i-j][j]+dp[i-1][j-1]
\]
设\(x\)为把\(i\)划分成\(j\)个大于等于2的正整数的方案数,\(y\)为把\(i\)划分成\(j\)个正整数且其中必有1的方案数
有
\[dp[i][j]=x+y
x=dp[i-j][j]
y=dp[i-1][j-1]
\]
把i-j划分成j个正整数有dp[i-j][j]种方案,每种方案与把\(i\)划分成\(j\)个大于等于2的正整数的方案一一对应。(每个数+1即可)
把i-1划分成j-1个正整数有dp[i-1][j-1]种方案,每种方案与把\(i\)划分成\(j\)个正整数且其中必有1的方案一一对应。(多划分出来的就是那个1)
把n划分成k个互异正整数
设\(dp[i][j]\)表示把\(i\)划分成\(j\)个互异正整数的方案数

浙公网安备 33010602011771号