递归和全排列

#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个。 

猜你喜欢

转载自www.cnblogs.com/hrlsm/p/13206744.html
今日推荐