用 Python 找出蛇和梯子游戏中最小动作的程序
假设我们正在玩蛇和梯子的游戏。我们有一个条件,我们可以在骰子上掷出我们喜欢的任何数字。我们从位置0开始,我们的目的地是位置100,我们多次掷骰子到达目的地。如果我们提供了蛇和梯子在board.The阵列上的位置,我们必须找出到达目的地所需的最少掷骰子数。棋盘上蛇或梯子的起始值和结束值。
所以,如果输入像阶梯=[(11,40),(37,67),(47,73),(15,72)],蛇=[(90,12),(98,31),(85,23),(75,42),(70,18),(49,47)],则输出为8。
考虑到蛇和梯子的位置,到达棋盘上的第100个位置所需的最少移动次数为8。
示例
让我们看看以下实现以获得更好的理解-
def solve(ladders, snakes): ladders.extend(snakes) edges = {} for f,t in ladders: edges[f] = t u = set() v = set() v.add(1) m = 0 while 100 not in v: m += 1 w = set() for f in v: for i in range(1,7): n = f + i if n in edges: n = edges[n] if n in u: continue u.add(n) w.add(n) v = w return m print(solve([(11, 40), (37,67),(47, 73),(15, 72)], [(90, 12), (98, 31), (85, 23), (75, 42), (70, 18), (49, 47)]))
输入
[(11, 40), (37,67),(47, 73),(15, 72)], [(90, 12), (98, 31), (85, 23), (75, 42), (70, 18), (49, 47)]输出结果
8