我正在尝试编写一个程序,提示用户输入正整数N并打印长度为N的所有二进制字符串的集合。例如,如果用户输入3,程序将打印:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
我已经尝试了一段时间,但我无法做到。如果有人可以帮助我,我会很感激!!感谢
答案 0 :(得分:1)
问题是算法中典型的回溯问题,我在这里用C语言编写了示例代码,你可以有一个参考。
#include <stdio.h>
#include <stdlib.h>
void getAllBi(int depth, int A[], int n) {
if(depth >= n) {
int i;
for(i = 0; i < n; ++i) {
printf("%d ", A[i]);
}
printf("\n");
return;
}
A[depth] = 0;
getAllBi(depth+1, A, n);
A[depth] = 1;
getAllBi(depth+1, A, n);
}
int main() {
int n;
scanf("%d", &n);
int *A = (int*)malloc(n * sizeof(int));
getAllBi(0, A, n);
return 0;
}