全排列演算法及實現

2021-09-08 10:47:27 字數 641 閱讀 1802

全排列在非常多程式都有應用,是乙個非經常見的演算法,常規的演算法是一種遞迴的演算法,這樣的演算法的得到基於下面的分析思路。  給定乙個具有n個元素的集合(n>=1),要求輸出這個集合中元素的全部可能的排列。

一、遞迴實現

比如,假設集合是,那麼這個集合中元素的全部排列是,顯然,給定n個元素共同擁有n!種不同的排列,假設給定集合是,能夠用以下給出的簡單演算法產生其全部排列,即集合(a,b,c,d)的全部排列有以下的排列組成:

(1)以a開頭後面跟著(b,c,d)的排列

(2)以b開頭後面跟著(a,c,d)的排列

(3)以c開頭後面跟著(a,b,d)的排列

(4)以d開頭後面跟著(a,b,c)的排列,這顯然是一種遞迴的思路,於是我們得到了下面的實現:

#include "iostream"

using namespace std;

void permutation(char* a,int k,int m)

if(flag==1) //假設4在3的左邊,執行完**,flag就是1

}while(next_permutation(a,a+length));

}int main(void)

全排列演算法及實現

全排列在很多程式都有應用,是乙個很常見的演算法,常規的演算法是一種遞迴的演算法,這種演算法的得到基於以下的分析思路。給定乙個具有n個元素的集合 n 1 要求輸出這個集合中元素的所有可能的排列。一 遞迴實現 例如,如果集合是,那麼這個集合中元素的所有排列是,顯然,給定n個元素共有n 種不同的排列,如果...

全排列演算法及實現

全排列在很多程式都有應用,是乙個很常見的演算法,常規的演算法是一種遞迴的演算法,這種演算法的得到基於以下的分析思路。給定乙個具有n個元素的集合 n 1 要求輸出這個集合中元素的所有可能的排列。一 遞迴實現 例如,如果集合是,那麼這個集合中元素的所有排列是,顯然,給定n個元素共有n 種不同的排列,如果...

全排列演算法及實現

全排列在很多程式都有應用,是乙個很常見的演算法,常規的演算法是一種遞迴的演算法,這種演算法的得到基於以下的分析思路。給定乙個具有n個元素的集合 n 1 要求輸出這個集合中元素的所有可能的排列。一 遞迴實現 例如,如果集合是,那麼這個集合中元素的所有排列是,顯然,給定n個元素共有n 種不同的排列,如果...