C语言如何打印一个数组排列组合

如题所述

N个元素中取出M个元素的所有排列
#include <stdio.h> #define MAX 10int used[MAX]; int result[MAX]; int M, N;void print() { int i; for(i = 0; i < M; i++) printf("%d ", result[i]); printf("\n");}void Perm(int step) { int i; if (step == M) print(); else for(i = 0; i < N; i++) if (!used[i]) { used[i] = 1; result[step] = i + 1; Perm(step + 1); used[i] = 0; }}main() { scanf("%d %d", &M, &N); Perm(0); }

N个元素中取出M个元素的所有组合

#include<stdio.h>#define MAX 20int c[MAX] = {0};int M, N;void print() { int i; for(i = 0; i < M; i++) printf("%d", c[i + 1]); printf("\n");}void Comp(int m) { if (m == M + 1) print(); else for(c[m] = c[m - 1] + 1; c[m] <= N - M + m; c[m]++) Comp(m + 1);}void main() { scanf("%d %d", &M, &N); Comp(1);}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-16

C语言的数组概念的学习,通过for循环输出打印数组

第2个回答  2018-07-19
用for循环打印不可以吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网