用 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