内容发布更新时间 : 2024/12/26 19:56:42星期一 下面是文章的全部内容请认真阅读。
1、蛇和梯子
2002年11月2日 阿拉伯和北非地区第5届地区赛
问题简述:“蛇和梯子”是一个在??的方格棋盘上进行的游戏。(见下图) 方格从1到N的平方编号。除了1号和最后1号方格,其他的格子有可能有蛇或梯子存在(蛇和梯子的数量及具体位置由输入确定,它们的数量都在100之内并且蛇和梯子不能临近放置,也就是在任何放置了两者首尾的方格之间至少还有一个未放置任何东西的格子)。开始的时候玩家把他们的标志物放在1号格子中。玩家轮流以扔骰子的方式移动他们的指示物。如果一个指示物到达了一条蛇的嘴部,则把它移回蛇的尾部。如果一个指示物到达了一个梯子的底部则将它移动到梯子的顶部。如果你是一个可以自由控制骰子的高手,现在请求出你至少需要扔几次骰子才能到达标为N^2的格子。(比如在上图所示例一中,你的方案应该是走4步到达5并由梯子上升到16,再走4步到达20并由梯子上升到33,然后走3步。这样,你一共需要扔3次骰子。而在例二中,你的方案应该是连扔4个6。) 比较容易看出,这个问题是不能用贪心算法解决的,因为你不能保证在这步到达一个数码比较大的格子就意味着最好的效率(即使是通过梯子到达了一个这步所能到达的最大号码的格子),也就是说,号码的大小并不能代表从这个格子到达终点所需要的步数上的多少,这就带给我们一个启发:蛇和梯子真的需要看成是两个东西来分别处理么? 一个硬币问题
给定N枚硬币,其中有正面的有反的输入用这种方法,每次只能翻动相邻的3个要求将硬币翻到所要的状态:全是正面,或全是反面 要求用最少的步骤完成,并打印出步骤 输入方法:1代表正面,0代表反面 比如1000111 对结果的要求 1
就是说硬币的排列是正反反反正正正 要求全部结果为正 要求语言:C