输入一个数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;
截图: