作者zz860619 (Kukuboo)
看板Python
标题[问题] 新手请教更好写法
时间Thu Nov 29 21:03:00 2018
各位大大晚安 最近小弟在写一个小专题
题目简单说就是分配航段内航班给各个航空公司
譬如我这个航段里总共有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://webptt.com/cn.aspx?n=bbs/Python/M.1543496582.A.137.html
1F:推 flarehunter: 如果需要每种组合的话你的做法就最快了11/29 21:51
2F:→ flarehunter: 但如果只是想算有几种的话应该有公式解11/29 21:51
QQ我需要每种组合因为还要做运算,如果没办法只好让它跑到底了
※ 编辑: zz860619 (1.164.253.107), 11/29/2018 22:32:51
3F:→ yoyololicon: 可以用itertools11/29 22:38
4F:→ yoyololicon: ㄟ好像不行 当我没说XD11/29 22:41
itertool我也有试过 就利用product跑出所有组合 然後再把数字加起来等於总航班数抓
出来 但是这样记忆体跑着跑着就爆了QQ 我也不知道有没有更好的办法
※ 编辑: zz860619 (1.164.253.107), 11/30/2018 00:25:15
5F:→ god145145: 後面还有什麽运算?11/30 08:26
就我想把每种可能性的利润算出来再做比教这样
※ 编辑: zz860619 (1.164.253.107), 11/30/2018 09:16:10
6F:推 TitanEric: 用yield呀 需要的时候再跟他拿11/30 19:24
好的,我查看看,谢谢~
※ 编辑: zz860619 (1.164.253.107), 12/01/2018 11:58:43
7F:推 jamfly: 好像大一的程设作业 12/01 15:48