【C++】递归实现全排列

问题描述

设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列

算法思想

设一个集合R={r1,r2,r3,....,rn},当n=1时,可以确定出排列方式perm(R)=r1;集合Ri=R-ri。

所以当n>1时,perm(R)=r1perm(R1)+r2perm(R2)+....+rnperm(Rn)。其中R1,R2,R3......Rn中的元素个数都为n-1。以这种方式不断递归下去直到n=1,既可确定排列方式。

代码如下

Void Perm(Type list[],int k,int m){

if(k==m){
  for(int i=0;i<=m;i++){
    cout<

算法复杂度

总共有n!种情况所以复杂度为O(n!)。

你可能感兴趣的:(c++,开发语言)