国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

如何用itertools解決無序排列組合的問題

2019-11-25 16:10:39
字體:
來源:轉載
供稿:網友

最近我作為Python菜鳥一枚開始征戰Codewars,所以打算在這里記下遇到的有意思的題目。今天這第一題叫做“Best Travel”:

John和Mary計劃去一些小鎮旅行。Mary已經列好了這些小鎮之間的距離比如ls=[50, 55, 57, 58, 60]。但是John不想開車太累,所以提出了兩個要求:1) 開車不超過某個距離比如t=174 miles 2) 只能去3個小鎮。

選擇哪3個小鎮可以讓John和Mary都滿意呢?(即找到距離之和最接近或等于t的3個小鎮)

這道題目可以抽象成:

輸入一個整數列表ls和整數t:

1. 找出從ls中任取三個元素的所有組合

2. 計算每個組合的三個元素之和

3. 如果存在小于或等于t的和,那么從中挑出最大的,然后輸出這個最大和對應的三元素組合

4. 如果不存在,只好返回None

實現要點:

1. 無序排列組合:

用itertools模塊的combinations方法

2. 求和:

用sum函數

3. 求最大值:

用max函數

4. 捕獲異常:

用try-except

借用這一題的某個best solution, 實現代碼為:

def choose_best_sum(t, k, ls):  import itertools  try:    return max(sum(combination) for combination in itertools.combinations(ls, k) if sum(combination) <= t)  except:    return None

以上這篇如何用itertools解決無序排列組合的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜山县| 南乐县| 逊克县| 沈丘县| 大悟县| 双牌县| 京山县| 柘城县| 元氏县| 德州市| 洛阳市| 岐山县| 邻水| 兖州市| 屯昌县| 堆龙德庆县| 桦甸市| 石首市| 南安市| 镇沅| 杂多县| 子长县| 晋江市| 井冈山市| 博乐市| 扎赉特旗| 溆浦县| 长汀县| 富锦市| 鄂伦春自治旗| 涞水县| 保德县| 叶城县| 登封市| 彩票| 开原市| 彭阳县| 乌拉特前旗| 临潭县| 永嘉县| 嘉荫县|