全排列問題python

2021-09-03 07:56:12 字數 1417 閱讀 8514

1.給定乙個陣列,陣列內含有重複元素,對陣列中的元素進行全排列,輸出排列組合

def unique(nums):##去掉重複的排列

begin=0;end=len(nums)

result=

if end==0:

result

permute_temp(begin,end,nums,result)

result.sort()

n=len(result)

i=0while i2.對於不含有重複元素的陣列,進行全排列

def permute(begin,end,nums,result):

if begin==end:

k=nums[:]

print(k

)else:

for i in range(begin,end):

temp=nums[begin];nums[begin]=nums[i];nums[i]=temp

permute_temp(begin+1,end,nums,result)

temp=nums[begin]

nums[begin]=nums[i]

nums[i]=temp

return result

if __name__=="__main__":

nums=[1,2,3]

result=

allresult=permute(0,len(nums),nums,result)

print(allresult)

3.輸出全排列中第k個排列組合

def fact(x):

if x==1:

return x

else:

return x*fact(x-1)

def mygetpermutation(s,n,k):

if n==1 or k==1:

return s

order=(k-1)//fact(n-1)

return s[order]+mygetpermutation(s[0:order]+s[order+1:],n-1,k-order*fact(n-1))

def getpermutation(n,k):

s=''.join(str(x) for x in range(1,n+1))

print(type(s))

return mygetpermutation(s,n,k)

if __name__=='__main__':

n,k=map(int,input().split())

result=getpermutation(n,k)

print(result)

python集合全排列 python全排列,遞迴

全排列 用遞迴方法 全排列 1 列表只有乙個元素 a 它的全排列只有a。2 列表有兩個元素 a,b 它的全排列為 a,b b,a 3 列表有三個元素 a,b,c 交換ab,b,a,c 對ac進行全排列 4 列表有n個元素,將第乙個元素固定,對剩下n 1個元素進行全排列。將第乙個元素依此與其他元素交換...

全排列問題

一 全排列問題演算法描述如下 舉例 345的全排列分別為 345 354 435 453 534 543,可見將整組數中的所有的數分別與第乙個數交換,這樣就總是在處理後n 1個數的全排列。又舉例 45的全排列有 45 54 可見將第乙個數分別與後面的數交換後輸出即為45的全排列。所以,對於乙個很長一...

全排列問題

題目描述814 全排列問題 鍵盤輸入n 1 n 10 個字元,輸出輸出其全排序。第一行為字元個數k,第二行為k個字元,不用空格隔開。輸出其每種排列佔一行,各字元間用一空格隔開。樣例輸入 3abc 樣例輸出 a b c a c b b a c b c a c b a c a b includeint ...