Python Code:
import itertools
list1=input('請輸入n個要排列的數,以空格分開==> ').split()
w=[]
w=[str(x) for x in list1] #將輸入的字改成串列
num=set(itertools.permutations(w)) #排列並去除相同元素
num=list(num)#轉成串列
other=[]#儲存有相同物的排列元素
for i in range(len(num)):#有相同字的排列拿出來另存
for j in range(0,len(num[0])-1):
if num[i][j]==num[i][j+1]:
other.append(num[i])
print(num)#列出所有排列
ans=set(num)-set(other)
print(ans)#列出同字不相鄰的排列
print(len(ans))#印出同字不相鄰的方法數
答案:384種
$這題用手算真的很難討論,哥是偷懶兼投降才用Python來解它$
沒有留言:
張貼留言