2014-11-04 69 views
-1

我正在嘗試編寫一個程序,提示用戶輸入正整數N並打印所有長度爲N的二進制字符串的集合。例如,如果用戶輸入3,程序將打印:c程序中的二進制數

0 0 0 
0 0 1 
0 1 0 
0 1 1 
1 0 0 
1 0 1 
1 1 0 
1 1 1 

我一直在嘗試這一段時間,但我無法做到這一點。如果有人能幫助我,我會很感激!謝謝

+2

你有什麼特別的麻煩?堆棧溢出不是一種編碼服務。 – Hosch250 2014-11-04 01:48:10

回答

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