C 演算法 用遞迴求排列

2021-06-02 02:13:11 字數 682 閱讀 1645

通常我們希望檢查n 個不同元素的所有排列方式以確定乙個最佳的排列。比如,

a,b 和c 的排列方式有:a b c, a c b, b a c, b c a, cab 和c b a。n 個元素的排列方式共有n !種。

由於採用非遞迴的c + +函式來輸出n 個元素的所有排列方式很困難,所以可以開發乙個遞

歸函式來實現。令e= 表示n 個元素的集合,我們的目標是生成該集合的所有排列方

式。令ei 為e中移去元素i 以後所獲得的集合,perm (x) 表示集合x 中元素的排列方式,ei . p e r m

(x)表示在perm (x) 中的每個排列方式的前面均加上ei 以後所得到的排列方式。例如,如果

e= ,那麼e1= ,perm (e1 ) = ( b c, c b),e1 .perm (e1) = (a b c, a c b)。

#include

using namespace std;

void swap(char &a,char &b)//交換

void permutation(char src,int begin,int end)

for (int i=begin;i<=end;++i)

}void main()

;permutation(src,0,2);

cin.get();

}

遞迴演算法 求序列的全排列

書本 windows程式設計 功能 輸出全部的排列情況 檔案 全排列.cpp include using namespace std 交換兩個元素的函式 templateinline void swap type a,type b 取兩個元素的引用,等會來交換 這個是乙個遞迴為了輸出全部的排列情況 ...

排列演算法 遞迴

int combination int n,int k c n,k c n 1,k c n 1,k 1 對組合數c n,k n k 將n,k分別化為二進位制,若某二進位制位對應的n為0,而k為1 則c n,k 為偶數 否則為奇數。組合數的奇偶性判定方法為 結論 對於c n,k 若n k k 則c n...

遞迴求先序排列

給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。1行,表示一棵二叉樹的先序。輸入 1 badc bdca輸出 1 abcd首先要知道這些遍歷的順序 前序遍歷根左右,中序遍歷左根右,後序遍歷左右根...