- 继续刷题,今天先刷几道动态规划,对于状态转移还是有点薄弱- 记录一道题解【分苹果】:m 个苹果n 个盘子,求不分顺序的最多种分发。(1,2),(2,1)是同一种分法。f(a,b,c):a 个 苹果 b 个盘,每个盘最多 c 个苹果;取第一个盘放 c 个,累加后续分法f(a - c, b -1, c)```javastatic 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; // 没有盘子,返回 0if(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;}}```