全数列

 输入一个数n,要求输出一个n位数,从1到n各出现一次,输出所有排列方案。
例:
输入:
3
输出: 
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

源代码:

#include

using namespace std;

void print(int max,int *num,int *flag,int *p,int n,int size)

{

int i;

p[n-1]=num[size];

for(i=0;i

{

if(flag[i]==0)

{

flag[i]=1;

print(max,num,flag,p,n+1,i);

flag[i]=0;

}

}

if(n==max)

{

for(i=0;i

printf("\n");

}

}

int main()

{

int *num,*flag,*p;

int max,i;

cin>>max;

num=new int [max];

flag=new int [max];

p=new int[max];

for(i=0;i

{

num[i]=i+1;

flag[i]=0;

}

for(i=0;i

{

flag[i]=1;

print(max,num,flag,p,1,i);

flag[i]=0;

}

return 0;

}

截图:

转载于:https://my.oschina.net/u/1392946/blog/511630

你可能感兴趣的:(全数列)