全排列问题
给定一组数,给出其全排列的算法
算法:递归
本质上可以用循环遍历代替,不过递归更加通用,且程序简单
源代码如下
#include<iostream.h>
#include<stdlib.h>
//using namespace std;
void Swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void Perm(int list[],int k,int m)
{
if(k==m)
{
for(int i=0;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else
for(int i=k;i<=m;i++)
{
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}
int main(void)
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
Perm(a,0,9);
}