生成所有2^n个长度为n的比特串
2015-06-03 09:44 星星之火✨🔥 阅读(708) 评论(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
注意到没有,有趣的是,我们的排列是一个严格的逆向字典序。
浙公网安备 33010602011771号