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 ...