一道 6-7 年级奥数题

24 天前
 zungmou
小智在镇上四处抓宝可梦。每天,他可以向他的收藏中添加 3 只、4 只或 5 只宝可梦,但他不能在连续的两天内添加相同数量的宝可梦。要让他恰好收集到 100 只宝可梦,最少需要多少天?
1584 次点击
所在节点    数学
26 条回复
itskingname
24 天前
这不就是算法里面经典的上楼梯问题吗?每步可以上 3 、4 或 5 级台阶,要上 100 级台阶最少要走几步。倒着算就好了。
mpfeitech7416
24 天前
private static int minDaysToCollect100Pokemons() {
int[][] dp = new int[101][6];
for (int[] row : dp) {
Arrays.fill(row, INF);
}

// 初始化状态
dp[0][3] = dp[0][4] = dp[0][5] = 0;

// 填充 DP 表
for (int i = 0; i <= 100; i++) {
for (int last : new int[]{3, 4, 5}) {
if (dp[i][last] != INF) {
if (i + 3 <= 100 && last != 3) {
dp[i + 3][3] = Math.min(dp[i + 3][3], dp[i][last] + 1);
}
if (i + 4 <= 100 && last != 4) {
dp[i + 4][4] = Math.min(dp[i + 4][4], dp[i][last] + 1);
}
if (i + 5 <= 100 && last != 5) {
dp[i + 5][5] = Math.min(dp[i + 5][5], dp[i][last] + 1);
}
}
}
}
return Math.min(dp[100][3], Math.min(dp[100][4], dp[100][5]));
}
BeforeTooLate
24 天前
@cxwave #6 哈哈,你得思路清奇,建议再想想。
BeforeTooLate
24 天前
@workingpad2 小学奥数啊,你小学得时候看到题目不一定觉得简单
yishengyongyi
24 天前
难道不是 23 么
cloudzhou
24 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1046810

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX