我是靠谱客的博主 优雅酒窝,最近开发中收集的这篇文章主要介绍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 无重复排列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部