机试 day5

- 继续刷题,今天先刷几道动态规划,对于状态转移还是有点薄弱
- 记录一道题解【分苹果】:m 个苹果n 个盘子,求不分顺序的最多种分发。(1,2),(2,1)是同一种分法。
f(a,b,c):a 个 苹果 b 个盘,每个盘最多 c 个苹果;取第一个盘放 c 个,累加后续分法f(a - c, b -1, c)
```java
    static int[][][] memo;
    // a 个苹果放进 b 个盘子,每个盘子最多放 c 个苹果
    public static int f(int a, int b, int c) {
        if(a == 0) return 1; // 没有苹果,则盘子放 0 个也是 1 种可能
        if(b == 0) return 0; // 没有盘子,返回 0
        if(memo[a][b][c] != -1) return memo[a][b][c]; //记忆化

        int ways = 0;
        for(int i = 0; i <= a && i <= c; i++) {
            ways += f(a - i, b - 1, i);
        }
        memo[a][b][c] = ways;
        return ways;
    }
}
```
2025-07-19
在牛客打卡5天,今天学习:代码提交 10 次
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务