亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

算法 - python 給定一個正整數a和一個包含任意個正整數的 列表 b,求所有<=a 的加法組合

瀏覽:103日期:2022-08-19 08:44:47

問題描述

例如,10,[1,2,3]

輸出類似:1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 12 + 2 + 2 +2 + 23 + 3 + 3 + 23 + 2 + 2 + 2 + 1

注意:是小于等于,list 內的正整數有可能并不能正好等于 a.

問題解答

回答1:

通過itertools.combinations_with_replacement我們寫短一點的代碼:

def solve2(lst, bound): max_length = bound // min(lst) for n in range(1, max_length+1):for c in itertools.combinations_with_replacement(lst,n): if sum(c) <= bound:print(’+’.join(map(str, c))) solve2([1,2,3], 10)回答2:

假設該問題符合下列假設:

列表內元素可重複使用

只要是能滿足小於等於上限值的組合都可接受, 就算遠小於上限值甚至是零也可以

以下是暴力法:

# code for python3from itertools import combinationsdef solve(lst, upperbound): candidates = [] for n in lst:for count in range(upperbound//n): candidates.append(n) allcomb = set() for l in range(1, len(candidates)+1):for comb in combinations(candidates, l): if not comb in allcomb:allcomb.add(comb)if sum(comb) <= upperbound: print(’+’.join([str(n)for n in comb]))solve([1,2,3], 10)

我回答過的問題: Python-QA

標簽: Python 編程
主站蜘蛛池模板: 国产精品热久久毛片 | 特黄特黄黄色大片 | 成年免费大片黄在线观看岛国 | 尤物国产在线 | 午夜精品久久久久久影视riav | 午夜影院一区 | 五月婷婷综合在线视频 | 欧美日韩一日韩一线不卡 | 国产美女一级视频 | 丝袜美腿秘书ol在线播放 | 国产精品久久久久免费视频 | 黄色一级影视 | 另类国产精品一区二区 | 午夜精品一区二区三区免费视频 | 久久er热这里只有精品免费 | 一级毛片真人免费播放视频 | 亚洲欧美日本综合一区二区三区 | 小明看看视频 | 麻豆中文字幕 | 美国毛片免费一级 | 一级做a爰性视频 | 老年人黄色一级片 | 国产精品一区二区无线 | jizjizjiz亚洲人| 中文字幕在线播 | 亚洲美女精品视频 | 国产成人精品18 | 久久99精品国产 | 伊人久久亚洲综合 | 国产成人综合久久 | 久久精品视频久久 | 色综合综合色综合色综合 | 青青青国产免费手机视频在线观看 | 91蝌蚪视频在线观看 | 色男天堂 | 国产五月婷婷 | 亚洲成a人片在线观 | 男女爱爱免费 | 黄色毛片免费在线观看 | 亚洲午夜久久影院 | 特级欧美午夜aa毛片 |