社区讨论LinuxDo 最新
dsh4.1flash 10.17版本 水杯题,max思考强度
提示词:有一个水杯配对游戏。共有 4 种不同颜色的水杯,每种颜色各有两个。将同色的两个水杯分别放在上下两层,因此 上下两层各有 4 个水杯。下层 4 个水杯按某个未知顺序排列,挑战者无法看到它们;上层水杯的颜色和位置则完 全可见。游戏开始后,挑战者可以反复进行以下操作: 向裁判询问当前有多少个位置满足“上下两个水杯颜色相同”。裁判只回答匹配位置的总数,不透露具体是哪些位置; 根据目前获得的所有信息,挑战者可以选择交换上层任意两个相邻位置的水杯,注意只能是相邻,不能是任意两个。 当 4 个位置全部匹配时,游戏结束。…
内容摘要
作者:#uname
板块:#开发调优
提示词:有一个水杯配对游戏。共有 4 种不同颜色的水杯,每种颜色各有两个。将同色的两个水杯分别放在上下两层,因此
上下两层各有 4 个水杯。下层 4 个水杯按某个未知顺序排列,挑战者无法看到它们;上层水杯的颜色和位置则完
全可见。游戏开始后,挑战者可以反复进行以下操作:
向裁判询问当前有多少个位置满足“上下两个水杯颜色相同”。裁判只回答匹配位置的总数,不透露具体是哪些位置;
根据目前获得的所有信息,挑战者可以选择交换上层任意两个相邻位置的水杯,注意只能是相邻,不能是任意两个。
当 4 个位置全部匹配时,游戏结束。问题:
挑战者应采用何种策略,才能保证对于下层水杯的任意排列都能完成配对?
所有能保证成功的策略中,最坏情况所需的交换次数最少是多少?
回答时请不要进行联网搜索,也不要写代码来辅助计算(包括思考过程中)。
假设答案是 x ,你需要给出严格的证明,为什么 x 可行,为什么小于 x 不可行。
答案和步骤:
\boxed{x=8}.
下面给出完整策略和证明。为方便书写,把四种颜色重新编号为 1,2,3,4,使初始上排为
1234.
用 s_i 表示交换上排第 i 个和第 i+1 个杯子,例如 s_2 交换第 2,3 位。下层排列也写成长度为 4 的字符串,例如 3142 表示下层从左到右依次为颜色 3,1,4,2。
一、一个基本事实
若当前上排为 u,下层目标排列为 \pi,则从 u 变成 \pi 所需的最少相邻交换数,等于“把 u 中每个颜色替换成它在下层排列 \pi 中的位置”后所得排列的逆序数。
因此,一旦目标排列已经确定,就可以用冒泡排序在“逆序数”步内完成。下面表中叶子处写的“距离”就是这个逆序数。
另外,四个颜色互不相同,所以裁判回答 3 是不可能的:若四个位置中有三个匹配,第四个也必然匹配。
二、保证 8 次以内完成的策略
初始询问一次,然后按回答分情况。
情形 1:初始回答 0
先做 s_1,上排变成 2134。再询问,记回答为 r。
r=2:只能是 2143。已用 1 次,距离 1,总计 2。
r=1
资讯来源
LinuxDo