Ada*_*fer 1 algorithm performance combinations permutation
一个hwk问题,显然也是一个常见的面试问题,我遇到了麻烦:
" 编写一个算法(伪代码),打印出一组n个元素中三个元素的所有子集. 这个元素的元素存储在一个列表中,该列表是算法的输入."
因此,例如,如果S = {1,2,3,4},算法将打印出这四种组合:
123 124 134 234
谁能提出他们的想法/解决方案?
pax*_*blo 10
递归:
def subset (prefix, list, count):
if count is 0:
print prefix
return
for each element in list:
subset (prefix & element, list beyond element, count - 1)
subset ("", {1,2,3,4}, 3)
Run Code Online (Sandbox Code Playgroud)
Python概念证明:
def subset (prefix, list, count):
if count is 0:
print prefix
return
for i in range (len(list)):
subset ("%s%s"%(prefix,list[i]), list[i+1:], count - 1)
subset ("", "1234", 3)
Run Code Online (Sandbox Code Playgroud)
哪个输出,输入字符串的各种值(第二个参数subset):
123456 12345 1234 123 12
------ ----- ---- --- --
123 123 123 123
124 124 124
125 125 134
126 134 234
134 135
135 145
136 234
145 235
146 245
156 345
234
235
236
245
246
256
345
346
356
456
Run Code Online (Sandbox Code Playgroud)