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

首頁 > 編程 > Python > 正文

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

2020-02-16 01:32:45
字體:
供稿:網(wǎng)友

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

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

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

這道題目可以抽象成:

輸入一個整數(shù)列表ls和整數(shù)t:

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

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

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

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

實現(xiàn)要點:

1. 無序排列組合:

用itertools模塊的combinations方法

2. 求和:

用sum函數(shù)

3. 求最大值:

用max函數(shù)

4. 捕獲異常:

用try-except

借用這一題的某個best solution, 實現(xiàn)代碼為:

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解決無序排列組合的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 九龙县| 屯留县| 新邵县| 新干县| 林州市| 柞水县| 新郑市| 鄂温| 新郑市| 蓬安县| 新余市| 天峨县| 库伦旗| 阳曲县| 五原县| 阿坝| 沿河| 溆浦县| 深圳市| 镇赉县| 中卫市| 工布江达县| 崇文区| 南木林县| 儋州市| 郎溪县| 汝城县| 宜兴市| 万州区| 清远市| 萨迦县| 南皮县| 呼玛县| 金门县| 三门县| 永嘉县| 民乐县| 小金县| 嘉定区| 广东省| 黄梅县|