int print_permutation(int n,int *A,int cur)
{
if(cur==n)
{
for(int i=0;i<n;i++)
printf("%d",A[i]);
printf("\n");
}
else
{
for(int i=1;i<=n;i++) //填各种数
{
int ok = 1;
for(int j= 0; j<cur; j++) //判断是否重复出现
if( A[j]==i ) ok=0; // 1,对这里的i可进行处理,使填入需要排列的数(各个数不同);
if(ok)
{
A[cur]=i; // 2处
print_permutation(n,A,cur+1);
}
}
}
}
void print_subset(int n, int *A,int cur) //递归构造子集
{
for(int i=0; i<cur; i++)
printf("%d ",A[i]);
printf("\n");
int s=cur ? A[cur-1]+1:0;
for(int i=s;i<n;i++)
{
A[cur]=i;
print_subset(n,A,cur+1);
}
}