代码改变世界

生成所有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

注意到没有,有趣的是,我们的排列是一个严格的逆向字典序。