作者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
1F:推 LPH66:那个 for 是终止之後印出的「一个」子集内容啊... 07/11 21:33
2F:→ LPH66:反而 else 才是递回本体 难怪你看不懂了 07/11 21:34