Re: [問題] 0與1的排列組合

看板C_and_CPP作者 (薯)時間14年前 (2009/09/26 04:02), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串2/5 (看更多)

09/26 03:53,
我的想法是當 n=1 只有兩種情0和1 n=2 就是遞迴去呼叫
09/26 03:53

09/26 03:54,
n=1 的情形加以組合
09/26 03:54
tony大的方式我有想過 #include <stdio.h> #include <stdlib.h> void recursive(char *ch, int n, int i, char bit); int count = 0; int main() { char *ch; int n; scanf("%d", &n); ch = (char* )malloc(sizeof(char)*n); recursive(ch, n, n, '0'); recursive(ch, n, n, '1'); printf("%d\n", count); return 0 ; } void recursive(char *str, int n, int i, char bit) { if ( i == 0) { printf("%s\n", str); count++; } else { *(str +n-i) = bit; recursive(str, n, i-1, '0'); recursive(str, n, i-1, '1'); } } 這樣有兩個問題(或三個) 第一個 當要印出來的時候else裡有兩個recursive的呼叫 所以每一種結果都會印兩次 我不知道怎麼修掉=.= 再來的問題就是 遞迴的精神不就是main裡面叫一次遞迴就可以直接解決問題的嗎? 我用了兩次(0、1) 好像不對...... 另外一個問題就是我怕老師會說我這不是用排列的 而是用產生的 下個禮拜還要去問助教可不可以... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.63.167

09/26 11:03, , 1F
http://codepad.org/9TrS6ue3 應該有解決前 2 個問題
09/26 11:03, 1F

09/26 11:07, , 2F
不過突然發現, malloc size 應該等於 sizeof(char)*n+1
09/26 11:07, 2F

09/26 11:08, , 3F
然後記得補 0 => ch[n]=0;
09/26 11:08, 3F

09/26 13:13, , 4F
用shift 可以嗎 XD
09/26 13:13, 4F

09/26 13:43, , 5F
不懂,為什麼size會 = n+1 ?? 另外ch[n] = '0'要加在哪
09/26 13:43, 5F

09/26 13:43, , 6F
裡呢?
09/26 13:43, 6F
文章代碼(AID): #1AlI79Ec (C_and_CPP)
文章代碼(AID): #1AlI79Ec (C_and_CPP)