递归全排列

递归全排列

题目:编写一个递归算法,输出n个元素的全排列,例如:3个元素1,2,3 全排列为:1 2 3   1 3 2   2 1 3   2 3 1    3 2 1   3 1 2!

[cpp]

#include <iostream>
using namespace std;
void permute(int a[],int s,int n)
{
int i,temp;
if(s==n-1)
{
for(i=0;i<n;i++) cout<<a[i]<<” “;
cout<<endl;
}
else for(i=s;i<n;i++)
{
temp=a[s];a[s]=a[i];a[i]=temp;
permute(a,s+1,n);
temp=a[s];a[s]=a[i];a[i]=temp;
}
}
int main()
{
int n,i,*p;
cout<<“几个数字:”;cin>>n;
p=new int[n];
cout<<“输入元素:”;
for(i=0;i<n;i++) cin>>p[i];
permute(p,0,n);
return 0;
}
[/cpp]