[問題860619 (1.164.253.107), 11/30/2018 00:24

看板Python作者 (Kukuboo)時間5年前 (2018/11/29 21:03), 5年前編輯推噓3(304)
留言7則, 5人參與, 5年前最新討論串1/1
各位大大晚安 最近小弟在寫一個小專題 題目簡單說就是分配航段內航班給各個航空公司 譬如我這個航段裡總共有10個航班要分配給2個航空公司 這樣就有可能是(0,10) (1,9)以此類推 航班數跟航空公司小還好說,分配的航空公司一多,想求出每種可能性就要跑半天,不知 道有沒有更快求出的寫法? 以下是目前寫的 a就是當下的可能性 total =4 #總共要分配的航班數 num = 3 #分給幾家航空公司 a = [0 for x in range(num)] def per (fas_total,air_number,num): if air_number == 1: a[num-air_number] = fas_total print(a) print("========================") else: for i in range(fas_total+1): a[num-air_number] = i per(fas_total-i,air_number-1,num) per(total,num,num) 希望有人可以幫忙我一下,謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.253.107 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1543496582.A.137.html

11/29 21:51, 5年前 , 1F
如果需要每種組合的話你的做法就最快了
11/29 21:51, 1F

11/29 21:51, 5年前 , 2F
但如果只是想算有幾種的話應該有公式解
11/29 21:51, 2F
QQ我需要每種組合因為還要做運算,如果沒辦法只好讓它跑到底了 ※ 編輯: zz860619 (1.164.253.107), 11/29/2018 22:32:51

11/29 22:38, 5年前 , 3F
可以用itertools
11/29 22:38, 3F

11/29 22:41, 5年前 , 4F
ㄟ好像不行 當我沒說XD
11/29 22:41, 4F
itertool我也有試過 就利用product跑出所有組合 然後再把數字加起來等於總航班數抓 出來 但是這樣記憶體跑著跑著就爆了QQ 我也不知道有沒有更好的辦法 ※ 編輯: zz860619 (1.164.253.107), 11/30/2018 00:25:15

11/30 08:26, 5年前 , 5F
後面還有什麼運算?
11/30 08:26, 5F
就我想把每種可能性的利潤算出來再做比教這樣 ※ 編輯: zz860619 (1.164.253.107), 11/30/2018 09:16:10

11/30 19:24, 5年前 , 6F
用yield呀 需要的時候再跟他拿
11/30 19:24, 6F
好的,我查看看,謝謝~ ※ 編輯: zz860619 (1.164.253.107), 12/01/2018 11:58:43

12/01 15:48, 5年前 , 7F
好像大一的程設作業
12/01 15:48, 7F
文章代碼(AID): #1R_-E64t (Python)