小编Dou*_*e A的帖子

将 n 个对象划分为 k 个组的方法的数量,以便没有一个组的对象比以前形成的组少?

示例: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 比较陌生。

algorithm recursion memoization dynamic-programming

6
推荐指数
1
解决办法
1万
查看次数