一个有趣的问题

STEM版,合并数学,物理,化学,科学,工程,机械。不包括生物、医学相关,和计算机相关内容。

版主: Tlexanderverdelite

回复
头像
(ッ)
职业作家
职业作家
帖子: 710
注册时间: 7月 19, 2023, 10:04 pm
昵称(选填): 论坛元老

一个有趣的问题

帖子 (ッ) »

三个柱子,每个上面有l <= m <= h个环

每次操作可以在两根不同柱子上各取下一个环;或者在一个柱子上取下一个环

问,最少需要操作多少次才能把3柱清空

一个显然的做法是递归。再有就是如果h >= l + m,结果也是显然的


头像
YWY
论坛精英
论坛精英
帖子: 6209
注册时间: 7月 22, 2022, 5:25 pm
昵称(选填): YWY(夜未央)

Re: 一个有趣的问题

帖子 YWY »

不知道有没有简单公式,只涉及l, m , h的简单公式。

具体操作上,似乎是从环数最多的两个柱子上各取一个环(如果m和h都大于0),然后就是递归,每一步都是从环数最多的两个柱子上各取一个环(除非只剩一个柱子上有环)。
持仓抄底锁利,你钱你定
看牛观猪喊熊,自娱自乐
股市变幻莫测,师母已呆
赌途曲折无常,吃枣药丸
kde23
正式会员
正式会员
帖子: 6
注册时间: 10月 18, 2022, 11:54 pm

Re: 一个有趣的问题

帖子 kde23 »

试解一下。 显然,要想操作次数少,就要尽量多的每次取双环,把取一个环的次数限制到最小。 直观的想法是把最多(h环)柱子上每次一环取一些后,剩下的可以每次两个取完, 这其实就是最优取法, 表述如下(注, 为清晰起见,把l,m,h改为大写表示):

最小操作数为
H when H>=L+M
(L+M+H)/2 when H<L+M and (L+M+H) is even
(L+M+H+1)/2 when H<L+M and (L+M+H) is odd

证明:
用记号(x,y,z)表示一次在三个柱子分别取x,y,z个环的操作, 0<=x,y,z<=1, 且不同时为1
(1) 当 H>=L+M 时, 注意每次操作在第三个柱子上取的环数不能超过1,故总次数>=H。
另一方面,确实有如下方法用H次取完:
(1,0,1) L次
(0,1,1) M次
(0,0,1) H-L-M次

(2) 当 H<L+M 且 (L+M+H)为偶数时,则如下三个数都是非负整数:
p = (L+M-H)/2
q = (L+H-M)/2
r = (H+M-L)/2
取法
(1,1,0) p次
(1,0,1) q次
(0,1,1) r次
能把三个柱子都取完,且每次都是取两个环,已是最优取法。 次数为
p+q+r = (L+M+H)/2

(3) 当 H<L+M 且 (L+M+H)为奇数时。 由于总数为单数, 任何取法都至少有一次是只取一个。 把第三柱取掉一个环,则剩下的L,M,(H-1)环满足条件(2),用
(L+M+H-1)/2次可以取完。 因此最优取法的次数是
1 + (L+M+H-1)/2 = (L+M+H+1)/2
YouHi
论坛支柱
论坛支柱
帖子: 11649
注册时间: 7月 22, 2022, 10:36 pm

Re: 一个有趣的问题

帖子 YouHi »

我怎么记得谭浩强的Basic教材里就有这道题啊。
回复

回到 “STEM”