Как Хелен покупает больше всего тетрадей?
Проблема:
Хелен-школьная учительница, которая имеет м долларовый. Хелен хочет купить как можно больше блокнотов. Есть н магазины, которые продают пачки блокнотов. Массив bundleQuantities хранит количество записных книжек, проданных в пачке каждым из н магазины. Массив bundleCosts держит в руках н стоимость соответствующих пакетов.
Инфо:
- м является положительным целым числом
- н >= 2
- Элементы bundleQuantities и bundleCosts являются целыми положительными числами, они оба имеют длину н и индексы coorespond: i-й элемент bundleQuantities соответствует i-му элементу bundleCosts.
Цель:
Напишите функцию вида: mostnotebook(m, bundleQuantities, bundleCosts), которая возвращает наибольшее количество ноутбуков, приобретенных за m долларов.
Пример:
большинство книг(50, [20, 19], [24, 19]) вернул бы 40.
Что я уже пробовал:
Я нашел самые возможные пакеты, которые можно купить в каждом магазине для <= м долларовый.
Я создал диапазоны из каждого из них наиболее покупаемые-на-каждый-магазине границы.
Я хотел попытаться найти каждую перестановку всех этих диапазонов и сравнить количество записных книжек, которым это соответствовало (только если они стоили <= м долларовый). Однако я не мог заставить это работать :(.
from itertools import product def mostNotebooks(n, bundleQuantities, bundleCosts): maxPurchasable = [] for i in range(len(bundleCosts)): ithRange = [] for j in range((n//bundleCosts[i])+1): ithRange.append(j) maxPurchasable.append(ithRange) currPermute = product(maxPurchasable[0], maxPurchasable[1]) permute = [] for c in currPermute: permute.append(list(c)) print(permute) mostBundles = 0 for p in permute: currCost = 0 currBundles = 0 for i in range(len(bundleCosts)): currCost += bundleCosts[i] * p[i] currBundles += bundleQuantities[i] * p[i] if currCost > n: currBundles = 0 break if currBundles > mostBundles: mostBundles = currBundles print(mostBundles) return mostBundles
OriginalGriff
Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.
Поэтому нам нужно, чтобы вы сделали эту работу, и мы поможем вам, когда вы застрянете. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.
Zast23
Спасибо, я выложу код, который уже пробовал.
CHill60
Не могли бы вы также объяснить, в чем заключается проблема в настоящее время
Zast23
Я не могу заставить перестановки правильно работать с itertools.product (я тоже пробовал перестановку и комбинацию itertools). Но это также крайне неэффективно, и я хотел бы знать, есть ли лучший способ подойти к этому концептуально?
Patrice T
В чем же проблема ?
Zast23
Есть ли более эффективное решение? Мне не нужен код, только концепция.
Patrice T
Ознакомиться С С1.
У вас есть образец побольше?
Есть ли у вас URL-адрес, где вы нашли вызов?