Programowanie konkurencyjneŁatwe

Ułamkowy plecak

Szczegółowy przewodnik i implementacja Python dla problemu „Ułamkowego plecaka”.

Oświadczenie o problemie

Łatwe

Napisz funkcję fractional_knapsack(W, items), która pobiera pojemność plecaka W i listę krotek items, gdzie każda krotka to (value, weight). Znajdź maksymalną całkowitą wartość, jaką można uzyskać w plecaku, umożliwiając rozbicie/podzielenie przedmiotów. Zaokrąglij wynik do 2 miejsc po przecinku.

Ograniczenia
  • 1 <= len(items) <= 1000
  • 1 <= W <= 10^5
  • 1 <= value, weight <= 10^4

Przykłady

Example 1
Input
fractional_knapsack(50, [(60, 10), (100, 20), (120, 30)])
Output
240.0
Explanation

Take the first and second item fully, and 2/3 of the third item. Total value: 60 + 100 + 120 * (20/30) = 240.0.

Example 2
Input
fractional_knapsack(15, [(24, 10), (18, 10), (15, 10)])
Output
33.0
Explanation

Take the first item fully, and 1/2 of the second item. Total value: 24 + 18 * 0.5 = 33.0.

Need a Hint?
Rozważ użycie struktur danych specyficznych dla Greedy, takich jak zestawy lub sterty.
Edge Cases to Watch
  • Puste struktury wejściowe
  • Wejścia jednoelementowe
  • Duże granice liczbowe

Gotowy do rozwiązania?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Otwórz w Edytorze
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.