作者mqazz1 (無法顯示)
站內Prob_Solve
標題[請益] 列出所有子集..不懂它的虛擬碼
時間Sun Jul 11 20:55:09 2010
列出所有子集
給定一個集合 S = {1, 2, ..., n},列出所有子集(包含空集合)
Ex. {1, 2}
有1/ \沒1
/ \
/ \
有2/ \沒2 有2/ \沒2
{1,2} {1} {2} { }
/*
input:
A 記錄選擇狀況矩陣
S 集合內的內容
n 集合個數
k 目前走到decision tree的層數
/*
powerset(A, S, n, k)
begin
if k > n
do for i ← 1 to n //這邊i是1~n,可是n個元素子集合不是2^n?
if A[i] = True
then output s[i]
else //else之後就不太懂了....
A[k] ← True
powerset(A, S, n, k+1)
A[k] ← False
powerset(A, S, n, k+1)
end
//初始以 powerset(A, S, n, 1) 呼叫
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.30.83
推 LPH66:那個 for 是終止之後印出的「一個」子集內容啊... 07/11 21:33
→ LPH66:反而 else 才是遞迴本體 難怪你看不懂了 07/11 21:34