枚举排列

#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两种序列出现。
所以结果是全排列。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容