作者billy20510 ( *~鴨子~*)
看板Programming
標題[問題]用遞迴寫一個PowerSet,求解釋
時間Wed Oct 15 20:49:06 2014
#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://webptt.com/m.aspx?n=bbs/Programming/M.1413377349.A.0A4.html
1F:→ MOONRAKER: 用看的怎麼可能看出來。不要看就懂了。 122.116.43.189 10/15 21:36
2F:→ alibuda174: 根據powerset定義 buf裡的元素都有兩 36.226.147.151 10/15 22:18
3F:→ alibuda174: 種選擇 1.放入ans 2.不放入 36.226.147.151 10/15 22:18
4F:→ alibuda174: Powerset(i,j)的i給ans用 代表放入幾 36.226.147.151 10/15 22:20
5F:→ alibuda174: 個 j給buf用 指向某元素 36.226.147.151 10/15 22:20
6F:→ alibuda174: 所以當呼叫Powerset(i,j)時 需要兩個 36.226.147.151 10/15 22:20
7F:→ alibuda174: 遞迴呼叫 1.不放入當前元素 繼續往下 36.226.147.151 10/15 22:21
8F:→ alibuda174: 也就是Powerset(i,j+1) 36.226.147.151 10/15 22:21
9F:→ alibuda174: 2.放入當前元素 繼續往下 也就是 36.226.147.151 10/15 22:21
10F:→ alibuda174: ans[i]=buf[j];與Powerset(i+1,j+1); 36.226.147.151 10/15 22:22
11F:→ billy20510: 我似乎有點了解了!! 36.233.78.242 10/16 16:20