c程序中的二进制数

时间:2014-11-04 01:43:13

标签: binary

我正在尝试编写一个程序,提示用户输入正整数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

我已经尝试了一段时间,但我无法做到。如果有人可以帮助我,我会很感激!!感谢

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;
}