问题描述
将编号为 1~10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
注意,需要提交的是一个整数,不要填写任何多余的内容
思路分析及代码实现
这里可以使用itertools库里的permutations方法
该方法可以生成指定长度的所有排列组合
然后遍历每组组合,判断是否有相邻编号
from itertools import permutations
s = [i for i in range(1,11)]
lis = permutations(s, 10)
def check(s):
for i in range(1,10):
if abs(s[i] - s[i-1]) == 1:
return False
break
return True
res = 0
for li in lis:
if check(li):
res += 1
print(res)
答案:479306