问题描述
将编号为 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
本文介绍了一个有趣的排列组合问题,即如何计算编号为1到10的书籍,在放置时避免编号相邻的书放在一起的方法总数。通过使用Python的itertools库中的permutations方法,实现了有效的求解算法。
542

被折叠的 条评论
为什么被折叠?



