魔术(800 构造)
个物体分别编号为 ,将这些物体排成一行。
定义一次操作 x op 为:
- 如果 ,将编号为 的物体与它左边的物体交换,如果 已经在最左边,则不交换;
- 如果 ,将编号为 的物体与它右边的物体交换,如果 已经在最右边,则不交换。
注意,编号为 的物体 不是 当前位置为 的物体。
能否在摆放前设计一条操作方案,使得无论如何摆放,标号为 的物体一定能在有限步内移动到第 个位置?如果能,输出操作方案。注意,你不需要最小化操作步数。
多测,,保证输入合法。
| Input | Output |
|---|---|
| 1 3 2 3 | Yes 3 1 1 2 2 3 1 |
称原先三个物体为筷子、杯子和勺子,题目要求把第二个物体,即杯子,移动到第三个位置。答案是有解,需要三步:
- 第一步:筷子和它左边的物品交换,如果筷子已经在最左边,就不需要移动。
- 第二步:杯子和它右边的物品交换,如果杯子已经在最右边,就不需要移动。
- 第三步:勺子和它左边的物品交换,如果勺子已经在最左边,就不需要移动。
Notes
为叙述方便,称这个物体为 A。
- 首先执行 次「将 A 与左边的物体交换」,现在 A 一定在最左边;
- 再执行 次「将 A 与右边的物体交换」,A 就在第 个位置了。
想法很简单,但这样操作就没有魔术效果了(笑
1 |
|
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 小明の雜貨屋!
評論
