通常我們希望檢查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首先要知道這些遍歷的順序 前序遍歷根左右,中序遍歷左根右,後序遍歷左右根...