国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 博客| 江城| 章丘市| 万山特区| 吉安县| 锦州市| 四平市| 桃源县| 博客| 桐城市| 南和县| 扶绥县| 鹰潭市| 巴彦县| 柘城县| 喜德县| 墨玉县| 乐平市| 江陵县| 泰宁县| 株洲县| 易门县| 镇远县| 阳山县| 安远县| 集贤县| 腾冲县| 芮城县| 郁南县| 荥阳市| 清原| 龙口市| 册亨县| 延长县| 怀来县| 建平县| 波密县| 宜良县| 淮安市| 大港区| 九江县|