我是靠谱客的博主 优雅酒窝,这篇文章主要介绍2-2 无重复排列,现在分享给大家,希望可以做个参考。

题目描述:输出从前N个正整数中取出M个数(不可重复)的排列。

#include <cstdio>
#include <cstring>

void R(int k);

int T[50];
int H[50];//标记数组,判断该数是否已被用过。

int N, M;

int main() {
    memset(H, 0, sizeof(H));
    scanf("%d%d", &N, &M);
    R(0);
    return 0;
}

void R(int k) { 
    if(k == M) {
        for(int a=0; a<M; a++) {
            printf("%-3d", T[a]);
        }
        printf("n");
    } else {
        for(int a=1; a<=N; a++) {
            if(H[a] == 0) {
                T[k] = a;
                H[a] = 1;
                R(k+1);
                H[a] = 0;
            }
        }
    }
    return;
}

p.s.:memset是在cstring的一个函数,在这里的作用是把H数组全部赋初值false。传送门

最后

以上就是优雅酒窝最近收集整理的关于2-2 无重复排列的全部内容,更多相关2-2内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(147)

评论列表共有 0 条评论

立即
投稿
返回
顶部