色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

瀏覽:114日期: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 編程
主站蜘蛛池模板: 精品国产网站 | 日韩欧美一级a毛片欧美一级 | 美国人成毛片在线播放 | 美女张开腿让人捅 | 欧美精品一区二区三区视频 | 日韩一级片 韩国 | 99精品免费 | 91精品国产综合成人 | 日韩理论在线 | 美一级片 | 成人91| 欧美在线播放成人a | 一区二区在线播放福利视频 | 美女视频黄色网址 | 国产一区视频在线 | 亚洲第一综合网站 | 亚洲欧美手机在线观看 | 久久99国产精品久久 | 一本久道久久综合婷婷五 | 国产又色又爽黄的网站免费 | 亚洲日韩精品欧美一区二区一 | 韩国在线精品福利视频在线观看 | 日产国产精品久久久久久 | 欧美一级毛片图 | 色在线网站免费观看 | 国产精品理论 | 国产色a在线观看 | 伊人久久大香线焦在观看 | 高清一区二区三区四区五区 | 一区二区三区欧美在线 | 日本女人在线观看 | 精品国产精品 | 免费看一级 | 精品欧美成人高清在线观看2021 | 国产亚洲综合精品一区二区三区 | 国产亚洲精| 永久免费精品视频 | 97久久曰曰久久久 | a级国产乱理伦片在线观看99 | 成人在线视频免费观看 | 国产孕妇孕交视频在线观看 |