递归和全排列

Posted hrlsm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归和全排列相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;
#define Swap(a,b) {int temp=a;a=b;b=temp;}
int data[]={1,2,3,4,5,6,7,8,9,10};
int num=0;
int Perm(int begin,int end)
{
    int i;
    if(begin==end){
        num++;
    }        //处理最终情况 ,递归结束 
    else
    for(i=begin;i<=end;i++){
        Swap(data[begin],data[i]);
        Perm(begin+1,end);
        Swap(data[begin],data[i]);
    }
 } 
 int main()
 {
     Perm(0,9);   //求10个数的全排列
     cout<<num<<endl;
 }
 //竞赛题在一般情况下限时1s,所以对于需要全排列的题目,其元素个数应该少于11个。 

 

以上是关于递归和全排列的主要内容,如果未能解决你的问题,请参考以下文章

算法初级面试题08——递归和动态规划的精髓阶乘汉诺塔子序列和全排列母牛问题逆序栈最小的路径和数组累加成指定整数背包问题

全排列和全组合实现

字符串的全排列和全组合

你真的分清楚子序列和全排列了吗?建议收藏

全排列 II(力扣第47题)

为啥这个字符串排列代码超过了递归限制?