枚举排列
2018-10-14 本文已影响0人
Mr_Vetr
#include<cstdio>
void 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 flag =1;
for(int j=0; j<cur; j++)
if(A[j] == i)
flag =0;
if(flag){
A[cur] = i;
print_permutation(n,A,cur+1);
}
}
}
}
int main()
{
int n=3;
int cur =0;
int A[10];
print_permutation(3,A,cur);
return 0;
}
过程描述:
1->1,2->1,2,3
1,3->1,3,2
当i =1 循环递归压栈
在第二次的时候会有 1,2和1,3两种序列出现。
所以结果是全排列。