将编号为1~10的10本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
注意,需要提交的是一个整数,不要填写任何多余的内容。
思路:
使用itertools包中的permutations可以迭代出所有的排列可能,然后再筛选
import itertools
def define(a):
for i in range(9):
if abs(a[i]-a[i+1]) == 1:
return False
return True
num = [1,2,3,4,5,6,7,8,9,10]
res = 0
for i in itertools.permutations(num, 10):
if define(i):
res += 1
print(res)