摘要: 1. 增量构造法。 假设给出的数组是有序且无重复的。void print_subset(int n, int *a, int cur) { for ( int i = 0; i < cur; i++ ) printf("%d ", a[i]); printf("\n"); int s = cur ? a[cur - 1] + 1 : 0; // 这句重要。用到了定序技巧, 规定集合a中元素编号从小到大排列。 for ( int i = s; i < n; i++ ) { a[cur] = i; print_subset(n, a, ... 阅读全文
posted @ 2012-12-06 23:30 tsubasa_wp 阅读(212) 评论(0) 推荐(0) 编辑
摘要: #define L 5int N[L] = {1,2,3,4,5};void print_permutation(int n, int *a, int cur) { if ( cur == n ) { for ( int i = 0; i < n; i++ ) { printf("%d ", a[i]); } printf("\n"); } else { for ( int i = 0; i < n; i++ ) { int has = 0; for ( ... 阅读全文
posted @ 2012-12-06 17:14 tsubasa_wp 阅读(302) 评论(0) 推荐(0) 编辑