我有一个问题,在一个竞技场里有m只狮子和n只老虎,我需要找到所有可能的解决方案,以便以这样的方式将它们消灭,没有两只老虎被一只接一只地消灭。我需要用回溯法。我的想法是对狮子和老虎的初始列表生成所有可能的排列,并且只保留有效的。这是我的代码,但问题是我没有找到从解决方案中删除重复项的方法。。有人知道怎么解决这个问题吗?提前谢谢!你知道吗
def toString(List):
return ' '.join(List)
def is_solution(listOfTL):
for i in range (0, len(listOfTL)-1):
if listOfTL[i] == "T" and (listOfTL[i] == listOfTL[i+1]) :
return -1
return 0
def permute(a, l, r):
if is_solution((a)) == 0 and l == r:
print (toString(a))
else:
for i in range(l,r+1):
a[l], a[i] = a[i], a[l]
permute(a, l+1, r)
a[l], a[i] = a[i], a[l]
def main():
n = int(input ("Number of tigers: "))
m = int(input ("Number of lions: "))
listOfValues = []
for i in range (0, n) :
listOfValues.append('T')
for i in range (n+1, m+n+1):
listOfValues.append('L')
print(permute(listOfValues, 0, len(listOfValues)-1))
目前没有回答
相关问题 更多 >
编程相关推荐