看板 Programming 關於我們 聯絡資訊
#include <iostream.h> char buf[3]={'a','b','c'}, ans[4]; int total_len=3; void Powerset(int i, int j) { if (j==total_len) { ans[i]=0; cout<<'{'<<ans<<'}'<<endl; } else { Powerset(i,j+1); ans[i]=buf[j]; Powerset(i+1,j+1); } } void main() { Powerset(0,0); } 上面是我在網路上找到的範例 看我看了好久還是無法看出他所要表達的意思 是否有高手可以幫我解釋一下 出處:http://www.programmer-club.com.tw/ShowSameTitleN/c/4166.html -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.78.242 ※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1413377349.A.0A4.html
MOONRAKER: 用看的怎麼可能看出來。不要看就懂了。 122.116.43.189 10/15 21:36
alibuda174: 根據powerset定義 buf裡的元素都有兩 36.226.147.151 10/15 22:18
alibuda174: 種選擇 1.放入ans 2.不放入 36.226.147.151 10/15 22:18
alibuda174: Powerset(i,j)的i給ans用 代表放入幾 36.226.147.151 10/15 22:20
alibuda174: 個 j給buf用 指向某元素 36.226.147.151 10/15 22:20
alibuda174: 所以當呼叫Powerset(i,j)時 需要兩個 36.226.147.151 10/15 22:20
alibuda174: 遞迴呼叫 1.不放入當前元素 繼續往下 36.226.147.151 10/15 22:21
alibuda174: 也就是Powerset(i,j+1) 36.226.147.151 10/15 22:21
alibuda174: 2.放入當前元素 繼續往下 也就是 36.226.147.151 10/15 22:21
alibuda174: ans[i]=buf[j];與Powerset(i+1,j+1); 36.226.147.151 10/15 22:22
billy20510: 我似乎有點了解了!! 36.233.78.242 10/16 16:20