午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:228日期: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 編程
主站蜘蛛池模板: 香蕉视频你懂的 | 欧美一区在线视频 | 国产码视频 | 窝窝午夜影院 | 国产免费黄色大片 | 国产高清视频一区二区 | 午夜探花在线 | 亚洲第一页在线观看 | 在线观看欧美视频 | 伊人网在线视频 | 一级特黄aaaaaa大片 | 色多多视频在线 | 国产成人精品网站 | 四虎影院永久地址 | 在线视频 一区二区 | 视频一区二区三区在线 | 免费黄网站在线观看 | 国产成人久久久 | 欧洲一区二区视频 | 黄色在线免费播放 | 色婷婷一区 | 欧美成欧美va| 天天操天天干天天插 | 欧美日韩久久 | 蜜桃传媒一区二区 | 午夜性色福利视频 | 国产自在线拍 | h在线看 | 蜜臀久久精品久久久久 | 国产午夜久久久 | 男人的午夜天堂 | 国产精品一区二区在线播放 | 高清国产一区二区三区四区五区 | 射黄视频 | 日日日夜夜操 | 中文字幕高清在线 | 成人在线激情 | 牛牛av在线 | 久久精品网址 | 97视频免费在线观看 | 91精品国产毛片武则天 |