-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
我一直在嘗試這一段時間,但我無法做到這一點。如果有人能幫助我,我會很感激!謝謝
我正在嘗試編寫一個程序,提示用戶輸入正整數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
我一直在嘗試這一段時間,但我無法做到這一點。如果有人能幫助我,我會很感激!謝謝
這個問題是一個典型的算法回溯問題,我在這裏用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;
}
你有什麼特別的麻煩?堆棧溢出不是一種編碼服務。 – Hosch250 2014-11-04 01:48:10