有重複元素的排列問題

2021-09-09 08:56:11 字數 787 閱讀 3495

設集合r=是要進行排列的n個元素,其中r1,r2,...,rn可能相同。 試著設計乙個演算法,列出r的所有不同排列。 即,給定n以及待排的n個可能重複的元素。計算輸出n個元素的所有不同排列。

演算法思路:

(1)n個元素的全排列=(n-1個元素的全排列)+(另乙個元素作為字首);

(2)出口:如果只有乙個元素的全排列,則說明已經排完,則輸出陣列;

(3)不斷將每個元素放作第乙個元素,然後將這個元素作為字首,並將其餘元素繼續全排列,等到出口,出口出去後還需要還原陣列;

listlist = null;

list> all = new arraylist<>(); // 存放所有可能的排列數

// 遞迴實現

public list> permute(int nums)

// 遞迴產生全排列

perm(nums, 1, m);

return all; }

void perm(int nums, int k, int m)

all.add(list);

} else

}} }

// 交換元素

public void swap(int nums, int i, int j)

// 判斷重複元素

public boolean ok(int nums, int k, int i)

}return true;

}

有重複元素的排列問題

源 include include include using namespace std long long ans int ok char str,int a int b fscanf ft,d n fscanf ft,s str i ans 0 perm fp,str,0,n 1 fprint...

有重複元素的排列問題

問題描述 設r 是要進行排列的n個元素。其中元素r1,r2 rn可能相同。試設計乙個演算法,列出r的所有不同排列。程式設計任務 給定n 以及待排列的n 個元素。計算出這n 個元素的所有不同排列。輸入格式 檔案的第1 行是元素個數n,1 n 500。接下來的1 行是待排列的n個元素。輸出格式 計算出的...

有重複元素的排列問題

題目描述 設r 是要進行排列的n個元素。其中元素r1,r2 rn可能相同。試設計乙個演算法,列出r的所有不同排列。給定n 以及待排列的n 個元素。計算出這n 個元素的所有不同排列。輸入輸入資料的第1 行是元素個數n,1 n 500。接下來的1 行是待排列的n個元素。輸出計算出的n個元素的所有不同排列...