輸出4個不同物品數量可變的各種組合
本帖最后由 一隻太平洋睡鯊 于 2022-8-23 15:54 编辑題目:
X=’abcd’ , 請輸出如下的各種組合 C14 , C24 ,C34,C44
{a},{b},{c},{d},{a,b},{a,c},{a,d},{b,c},{b,d},{c,d},{a,b,c},{a,b,d},{a,c,d},{b,c,d},{a,b,c,d}
我的答案(用迴圈):
listresult = []
X='abcd'
for i in X:
setemp = {i}
listresult.append(setemp)
for n in X:
for m in listresult:
setemp = m.copy()
setemp.update()
if setemp not in listresult:
listresult.append(setemp)
print(listresult)
輸出:
[{'a'},
{'b'},
{'c'},
{'d'},
{'a', 'b'},
{'a', 'c'},
{'a', 'd'},
{'b', 'c'},
{'b', 'd'},
{'a', 'b', 'c'},
{'a', 'b', 'd'},
{'c', 'd'},
{'a', 'c', 'd'},
{'b', 'c', 'd'},
{'a', 'b', 'c', 'd'}]
我的問題是,這個題目應該能用Recursion(遞迴/遞歸)達成?
我試了幾個思路,都不太對
希望有人能給個思路 def f(s):
result =
for i in s:
x = s.replace(i,'',1)
if x:
result += f(x)
return sorted(set(result), key=lambda x:)
本帖最后由 一隻太平洋睡鯊 于 2022-8-24 09:37 编辑
qq1151985918 发表于 2022-8-23 17:50
我拿去python tutor看,居然有404個step才跑完!
我看到step32就...不知道在幹嘛了{:10_266:}
不知道大神能不講解一下代碼的思路呢{:10_254:}
更新問題:
我又多看了幾次,感覺第一個問題點(因為看不懂這個就不知道後面的step在幹嘛了
是在step31從return sorted(set(result), key=lambda x:)這串代碼
跑出了一個的list
但到了step32,list變成['d'],然後成為了f('d')的return value
為時麼會從變成['d'],而不是回傳?
是因為return sorted(set(result), key=lambda x:)裡面的key嗎 一隻太平洋睡鯊 发表于 2022-8-24 09:16
我拿去python tutor看,居然有404個step才跑完!
我看到step32就...不知道在幹嘛了
不知道 ...
实话说,我不清楚你说的step是干啥的。我这就是递归求所有的子字符串,但是会有重复加了个去重加了个排序,递归的内容就是每次循环删除字符串的每一个字符,获取新的子串 qq1151985918 发表于 2022-8-24 10:53
实话说,我不清楚你说的step是干啥的。我这就是递归求所有的子字符串,但是会有重复加了个去重加了个排 ...
那是python tutor裡面的,visualize過程後的step{:10_282:}
页:
[1]