我有一个问题,就是在竞技场中有狮子和老虎,我需要找到所有可能的解决方案序列,以便以一种接一个的方式取出两只老虎的方式取出它们。我需要使用回溯方法。我的想法是生成狮子和老虎的初始列表的所有可能的排列,并仅保留有效的列表。这是我的代码,但问题是我没有找到从解决方案中删除重复项的方法..有没有人知道如何解决这个问题?提前谢谢!
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))