python寫的百元買百雞問題擴充套件
阿新 • • 發佈:2019-01-13
今天偶爾看到人家說百元買百雞的問題,問最簡演算法,所以跟著寫了個程式,並且擴充套件到以總價n買m個總數物品的問題,價格隨意。做個隨筆記錄一下。
def mathBuy(n = 100, m = 100, i = 5, j= 3, k = 1/3): """ 單位有m個人,現在年終準備了n元錢準備買活動獎品,要求中獎率100%, 獎品種類有3種,第一種的價格是i元,第二種的價格是j元,第三種的價格是k元。 現在問每種獎品應該買多少個才剛好花光n元錢,有幾種買法? 求最簡演算法。 :param n: 金額 :param m: 購買總數 :param i: 物品1的價格 :param j: 物品2的價格 :param k: 物品3的價格 :return: """ result = [] if (i * m <= n) or (j * m <= n) or (k * m <= n): x = 0 while x <= m and x <= n / i: y = int(((n - k * m) - (i - k) * x) / (j - k)) z = int((n - i * x - j * y) / k) sum = i * x + j * y + k * z if (x + y + z == m) and (y >= 0) and (z >= 0) and (sum == n): print(f"物品1:{x}個, 物品2:{y}個, 物品3:{z}個 ") num = [x, y, z] result.append(num) x += 1 else: print("價格不合適,買不到足夠物品!") return result