A=[["狼",1],["羊",1],["菜",1]] B=[["狼",0],["羊",0],["菜",0]] size=len(A) count=-1 number=-1 #岸上共存 def judge(A): if A[1][1]==1 and A[0][1]+A[2][1]==1: return False else: return True def A_to_B(): global number global count for i in range(size): if A[i][1]==1 and i!=number: A[i][1]-=1 if judge(A): B[i][1]+=1 number=i print("%s ,A—>B"%A[i][0]) count+=1 break else: A[i][1]+=1 continue else: continue #挑选一个不为刚运过来的物 def B_to_A(): global number global count if judge(B)==False: for j in range(size): if B[j][1]==1 and j!=number: B[j][1]-=1 A[j][1]+=1 number=j print("%s ,B—>A"%B[j][0]) count+=1 break else: if B[0][1]+B[1][1]+B[2][1]==3: print("任务完成") else: print("B->A") def shore(A): list1=[] for i in range(size): if A[i][1]==1: list1.append( A[i][0]) return list1 def sucess(): if B[0][1]+B[1][1]+B[2][1]==3: return True else: return False while 1: print("A岸上有",shore(A)) print("B岸上有",shore(B)) A_to_B() print("A岸上有",shore(A)) print("B岸上有",shore(B)) B_to_A() if sucess(): print("这个程序需要",count,"步") #或者print(f"这个程序需要{count}步") break
时间: 2024-01-20 15:02:51 浏览: 70
人狼羊菜渡河问题(含Matlab程序).doc
5星 · 资源好评率100%
这段代码是一个解决狼、羊、菜过河问题的 Python 代码。这个问题的规则是:有一个人、一只狼、一只羊和一些菜,他们需要过一条河,但是小船只能搭载一只物品或者人,且当狼和羊单独在一起时,狼会吃掉羊;羊和菜单独在一起时,羊会吃掉菜。请问,如何将所有物品和人都安全地运到对岸?
这段代码采用了暴力枚举的方法,每次将一个物品或者人从一个岸运到另一个岸,并判断运完后是否有问题,然后再将另一个岸的物品或者人运回来。如果所有的物品和人都被运到了对岸,则任务完成,程序结束。
阅读全文