欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何用itertools解決無(wú)序排列組合的問(wèn)題

 更新時(shí)間:2017年05月18日 07:51:40   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇如何用itertools解決無(wú)序排列組合的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

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

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

這道題目可以抽象成:

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

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

2. 計(jì)算每個(gè)組合的三個(gè)元素之和

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

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

實(shí)現(xiàn)要點(diǎn):

1. 無(wú)序排列組合:

用itertools模塊的combinations方法

2. 求和:

用sum函數(shù)

3. 求最大值:

用max函數(shù)

4. 捕獲異常:

用try-except

借用這一題的某個(gè)best solution, 實(shí)現(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解決無(wú)序排列組合的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論