Cn m 组合数,输出!
2013-09-25 00:53
309 查看
列出 N个数中取M个的全部组合 void combine(int a[], int n, int m, int b[], int M); 参数: a 存放候选数字 n 总项数 m 取出项数 b 存放选出结果 M = m
求从M个数中取N个数的组合问题,不需要排列.结果不是求有几种组合组合数,而是要把每一组组合数都罗列出来.
#include "stdio.h" #define MAX 100 void combine(int a[], int n, int m, int b[], int M); int main(void) { int i; int a[MAX], b[MAX]; for (i = 1; i < 100; i++) a[i - 1] = i; combine(a, 10, 5, b, 5); } void combine(int a[], int n, int m, int b[], int M) { int i, j; for (i = n; i >= m; i--) { b[m - 1] = i - 1; if (m > 1) combine(a, i - 1, m - 1, b, M); else { for (j = M - 1; j >= 0; j--) printf("%d ", a[b[j]]); printf("\n"); } } }