-
Notifications
You must be signed in to change notification settings - Fork 0
/
example.c
68 lines (54 loc) · 1.44 KB
/
example.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
* Permcomb
* Daniel Pena, (c) 2015
* License: Simplified BSD
*
*/
#include <stdio.h>
#include <permcomb.h>
void print( int n, int a[] ) {
for( int i=0; i<n; i++ ) {
printf(" %d ", a[i] );
}
printf("\n");
}
int main() {
int n = 4;
int kmax = 4;
int ntot;
int comb[kmax];
int perm[kmax];
for( int k=1; k<=kmax; k++ ) {
ntot = number_comb(n,k);
printf("\n\n%d-combinations from %d elements, total: %d\n", k, n, ntot );
first_comb( n, k, comb );
do {
print( k, comb );
} while( next_comb( n, k, comb ) );
}
for( int k=1; k<=kmax; k++ ) {
ntot = number_comb_wr(n,k);
printf("\n\n%d-combinations from %d elements with replacement, total: %d\n", k, n, ntot );
first_comb_wr( n, k, comb );
do {
print( k, comb );
} while( next_comb_wr( n, k, comb ) );
}
for( int k=1; k<=kmax; k++ ) {
ntot = number_perm(n,k);
printf("\n\n%d-permutation from %d elements, total: %d\n", k, n, ntot );
first_perm( n, k, perm );
do {
print( k, perm );
} while( next_perm( n, k, perm ) );
}
for( int k=1; k<=kmax; k++ ) {
ntot = number_perm_wr(n,k);
printf("\n\n%d-permutation from %d elements with replacement, total: %d\n", k, n, ntot );
first_perm_wr( n, k, perm );
do {
print( k, perm );
} while( next_perm_wr( n, k, perm ) );
}
return 0;
}