机试 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;
}
}
```
- 记录一道题解【分苹果】: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 次
全部评论
相关推荐
点赞 评论 收藏
分享
查看24道真题和解析 点赞 评论 收藏
分享
01-13 15:29
南京理工大学 Java 说一下背景,我人在某大厂,想跳槽,但是没有实操的agent经历。想着自己编一个简历和ai项目,然后背一背通关面试。下面我编造的这个项目怎么样?能通过吗?要在哪一个方面重点突破?(我简历部分都通过了。)
哞客37422655...:大厂面agent可能会问问bad case,提前准备三个实例看看
点赞 评论 收藏
分享
