關於全排列的問題

2021-09-25 13:18:56 字數 647 閱讀 5971

看下面乙個例子

給出乙個陣列 1 2 3

列出所有的全排列

1 2 3

1 3 2

2 1 3

2 3 1

3 2 1

3 1 2

這就是全排列

思路:

t=【x1,x2,x3,x4,x5,……..xn−1,xn】 

我們獲得了在第乙個位置上的所有情況之後(注:是所有的情況),對每一種情況,抽去序列t中的第乙個位置,那麼對於剩下的序列可以看成是乙個全新的序列

t1=【x2,x3,x4,x5,……..xn−1,xn】 

序列t1可以認為是與之前的序列毫無關聯了。同樣的,我們可以對這個t1進行與t相同的操作,直到t中只乙個元素為止。這樣我們就獲得了所有的可能性。所以很顯然,這是乙個遞迴演算法。

第一位的所有情況:無非是將x1與後面的所有數x2,x3,…….xn依次都交換一次 

**:

void swap(int &a,int &b)

void show(int arr, int n)

printf("\n");

}void prim(int arr, int p, int q)

else }

}

關於C 全排列問題

總結總結 從n個不同元素中取出m個元素的乙個排列。當m n時所有的排列情況叫全排列。例 a b c的全排列 a b c a c b b a c b c a c a b c b a 即所有的情況為n的階乘 n 如下 include include using namespace std 如下 incl...

關於全排列

最近看到很多全排列的問題,很多程式寫得太複雜,我自己也看不太懂,就自己寫了。包括了可以重複的排列和不能重複的排列,用到了遞迴。class demo3 public static int length ch.length public static char sh new char length 儲存...

關於陣列的遞迴全排列問題

進入大學後每天似乎都在努力學習,但是感覺總是學不會什麼東西。昨天在健身房跟同學聊天,提到學了東西之後可以自己寫一些東西來鞏固記憶和理解。今天剛剛接觸到乙個關於陣列遞迴全排列的問題,看了別人寫的相關介紹,自己根據理解也來獻醜一下。我這裡寫的陣列全排列問題主要用的就是遞迴的方法來實現這個陣列的全排列問題...