整数划分问题

把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\)个互异正整数的方案数

posted @ 2021-02-05 10:31  _Veritas  阅读(107)  评论(0)    收藏  举报