示例:n=8,k=4 答案:5
[1,1,1,5], [1,1,2,4], [1,1,3,3], [1,2,2,3], [2,2,2,2]
我想过应用动态编程来统计8个对象可以分成4组的方法,但无法理解如何跟踪前一组中的对象数量。
DP方法:
for(int j=0;j<=n;j++)
{
for(int i=1;i<=k;i++)
{
if(j<i)
continue;
if(j==i)
dp[j]=1;
for(int k=1;k<i;k++)
{
dp[j]+=dp[k]*dp[j-k];
}
}
}
Run Code Online (Sandbox Code Playgroud)
请帮助提供方法。我对 DP 比较陌生。