5题 图书排列
题目描述 将编号为 1~10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位 置。 请计算一共有多少种不同的排列方案。 注意,需要提交的是一个整数,不要填写任何多余的内容
代码:
res = 0
def check(a):
for i in range(9):
if abs(a[i]-a[i+1]) == 1:
return False
return True
def swap(a, x, y):
temp = a[x]
a[x] = a[y]
a[y] = temp
def sort(a, begin, end):
global res
if begin == end:
if check(a):
res += 1
return
for i in range(begin, end):
swap(a, begin, i)
sort(a, begin+1, end)
swap(a, begin, i)
a = [i for i in range(1, 11)]
sort(a, 0, len(a))
print(res)
结果: