生成所有2^n个长度为n的比特串
2015-06-03 09:44 星星之火✨🔥 阅读(706) 评论(0) 收藏 举报#include<stdio.h> void BitstringsRec(int n); int A[1000]; int G_N; int main(void) { while(1) { scanf("%d", &G_N); BitstringsRec(G_N); printf("\n"); } return 0; } void BitstringsRec(int n) { int i; if(n == 0) { for(i = 0; i < G_N; i++) printf("%d ", A[i]); printf("\n"); } else { A[n-1] = 0; BitstringsRec(n-1); A[n-1] = 1; BitstringsRec(n-1); } }
GCC编译运行,结果:
0
1
0
1
2
0 0
1 0
0 1
1 1
3
0 0 0
1 0 0
0 1 0
1 1 0
0 0 1
1 0 1
0 1 1
1 1 1
4
0 0 0 0
1 0 0 0
0 1 0 0
1 1 0 0
0 0 1 0
1 0 1 0
0 1 1 0
1 1 1 0
0 0 0 1
1 0 0 1
0 1 0 1
1 1 0 1
0 0 1 1
1 0 1 1
0 1 1 1
1 1 1 1
注意到没有,有趣的是,我们的排列是一个严格的逆向字典序。