[請益] 列出所有子集..不懂它的虛擬碼

看板Prob_Solve (計算數學 Problem Solving)作者 (無法顯示)時間14年前 (2010/07/11 20:55), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
列出所有子集 給定一個集合 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

07/11 21:33, , 1F
那個 for 是終止之後印出的「一個」子集內容啊...
07/11 21:33, 1F

07/11 21:34, , 2F
反而 else 才是遞迴本體 難怪你看不懂了
07/11 21:34, 2F
文章代碼(AID): #1CERymeY (Prob_Solve)
文章代碼(AID): #1CERymeY (Prob_Solve)