Napisz program, który rozwiąże ogólny problem plecakowy i wyświetli komunikat dotyczący tego, ile sztuk kolejnych przedmiotów spakowano, oraz jaka jest całkowita wartość spakowanego plecaka.
Specyfikacja problemu:
Dane:
nazwy – tablica łańcuchów znaków
wartosci – tablica liczb naturalnych; wartości poszczególnych przedmiotów
wagi – tablica liczb naturalnych; wagi poszczególnych przedmiotów
n – liczba naturalna; liczba rodzajów przedmiotów
pojemnosc – liczba naturalna; maksymalna pojemność plecaka
Wynik:
liczby sztuk poszczególnych przedmiotów (również równe 0), których całkowita waga nie przekracza wartości przechowywanej w zmiennej pojemnosc, a których całkowita wartość jest największa wśród możliwych wypełnień plecaka rzeczami o takiej wadze, która nie przekracza wartości zmiennej pojemnosc
całkowita wartość spakowanego plecaka
Działanie programu przetestuj dla następujących danych:
Linia 1. nazwy znak równości otwórz nawias kwadratowy cudzysłów apaszka cudzysłów przecinek cudzysłów beret cudzysłów przecinek cudzysłów chusteczki cudzysłów przecinek cudzysłów dres cudzysłów przecinek cudzysłów espadryle cudzysłów zamknij nawias kwadratowy.
Linia 2. wartosci znak równości otwórz nawias kwadratowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias kwadratowy.
Linia 3. wagi znak równości otwórz nawias kwadratowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias kwadratowy.
Linia 4. pojemnosc znak równości 11.
Linia 5. n znak równości 5.
Linia 1. Liczba spakowanych sztuk przedmiotu apaszka otwórz nawias okrągły indeks 0 zamknij nawias okrągły dwukropek 0.
Linia 2. Liczba spakowanych sztuk przedmiotu beret otwórz nawias okrągły indeks 1 zamknij nawias okrągły dwukropek 11.
Linia 3. Liczba spakowanych sztuk przedmiotu chusteczki otwórz nawias okrągły indeks 2 zamknij nawias okrągły dwukropek 0.
Linia 4. Liczba spakowanych sztuk przedmiotu dres otwórz nawias okrągły indeks 3 zamknij nawias okrągły dwukropek 0.
Linia 5. Liczba spakowanych sztuk przedmiotu espadryle otwórz nawias okrągły indeks 4 zamknij nawias okrągły dwukropek 0.
Linia 7. Wartosc spakowanych przedmiotow dwukropek 55.
Liczba spakowanych sztuk przedmiotu apaszka (indeks 0): 0
Liczba spakowanych sztuk przedmiotu beret (indeks 1): 11
Liczba spakowanych sztuk przedmiotu chusteczki (indeks 2): 0
Liczba spakowanych sztuk przedmiotu dres (indeks 3): 0
Liczba spakowanych sztuk przedmiotu espadryle (indeks 4): 0
Wartosc spakowanych przedmiotow: 55
RoTxxETNFfNkn
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Linia 1. def sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły dwukropek.
Linia 2. for i in range otwórz nawias okrągły n minus 1 zamknij nawias okrągły dwukropek.
Linia 3. for j in range otwórz nawias okrągły n minus i minus 1 zamknij nawias okrągły dwukropek.
Linia 4. if wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias ostrokątny wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy dwukropek.
Linia 5. wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy przecinek wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy.
Linia 6. indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy przecinek indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy.
Linia 8. def ogolnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły dwukropek.
Linia 9. wartoscDoWagi znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.
Linia 10. indeksy znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.
Linia 11. for i in range otwórz nawias okrągły n zamknij nawias okrągły dwukropek.
Linia 12. wartoscDoWagi kropka append otwórz nawias okrągły wartosci otwórz nawias kwadratowy i zamknij nawias kwadratowy prawy ukośnik wagi otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 13. indeksy kropka append otwórz nawias okrągły i zamknij nawias okrągły.
Linia 15. sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły.
Linia 17. wynik znak równości 0.
Linia 18. spakowane znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.
Linia 19. for i in range otwórz nawias okrągły n zamknij nawias okrągły dwukropek.
Linia 20. spakowane kropka append otwórz nawias okrągły 0 zamknij nawias okrągły.
Linia 22. for i in range otwórz nawias okrągły n zamknij nawias okrągły dwukropek.
Linia 23. indeks znak równości indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy.
Linia 24. while wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości pojemnosc dwukropek.
Linia 25. pojemnosc minus znak równości wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy.
Linia 26. wynik plus znak równości wartosci otwórz nawias kwadratowy indeks zamknij nawias kwadratowy.
Linia 27. spakowane otwórz nawias kwadratowy indeks zamknij nawias kwadratowy plus znak równości 1.
Linia 29. for i in range otwórz nawias okrągły n zamknij nawias okrągły dwukropek.
Linia 30. print otwórz nawias okrągły cudzysłów Liczba spakowanych sztuk przedmiotu cudzysłów plus nazwy otwórz nawias kwadratowy i zamknij nawias kwadratowy plus cudzysłów otwórz nawias okrągły indeks cudzysłów plus str otwórz nawias okrągły i zamknij nawias okrągły plus cudzysłów zamknij nawias okrągły dwukropek cudzysłów plus str otwórz nawias okrągły spakowane otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 32. print otwórz nawias okrągły cudzysłów lewy ukośnik nWartosc spakowanych przedmiotow dwukropek cudzysłów przecinek wynik zamknij nawias okrągły.
Linia 34. nazwy znak równości otwórz nawias kwadratowy cudzysłów apaszka cudzysłów przecinek cudzysłów beret cudzysłów przecinek cudzysłów chusteczki cudzysłów przecinek cudzysłów dres cudzysłów przecinek cudzysłów espadryle cudzysłów zamknij nawias kwadratowy.
Linia 35. wartosci znak równości otwórz nawias kwadratowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias kwadratowy.
Linia 36. wagi znak równości otwórz nawias kwadratowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias kwadratowy.
Linia 37. pojemnosc znak równości 11.
Linia 38. n znak równości 5.
Linia 39. ogolnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły.
def sortuj(wartoscDoWagi, indeksy, n):
for i in range(n - 1):
for j in range(n - i - 1):
if wartoscDoWagi[j] < wartoscDoWagi[j + 1]:
wartoscDoWagi[j], wartoscDoWagi[j + 1] = wartoscDoWagi[j + 1], wartoscDoWagi[j]
indeksy[j], indeksy[j + 1] = indeksy[j + 1], indeksy[j]
def ogolnyPlecak(nazwy, wartosci, wagi, n , pojemnosc):
wartoscDoWagi = []
indeksy = []
for i in range(n):
wartoscDoWagi.append(wartosci[i] / wagi[i])
indeksy.append(i)
sortuj(wartoscDoWagi, indeksy, n)
wynik = 0
spakowane = []
for i in range(n):
spakowane.append(0)
for i in range(n):
indeks = indeksy[i]
while wagi[indeks] <= pojemnosc:
pojemnosc -= wagi[indeks]
wynik += wartosci[indeks]
spakowane[indeks] += 1
for i in range(n):
print("Liczba spakowanych sztuk przedmiotu " + nazwy[i] + " (indeks " + str(i) + "): " + str(spakowane[i]))
print("\nWartosc spakowanych przedmiotow:", wynik)
nazwy = ["apaszka", "beret", "chusteczki", "dres", "espadryle"]
wartosci = [1, 5, 4, 1, 9]
wagi = [9, 1, 2, 8, 7]
pojemnosc = 11
n = 5
ogolnyPlecak(nazwy, wartosci, wagi, n, pojemnosc)
31
Ćwiczenie 2
Napisz program, który rozwiąże decyzyjnyproblem plecakowy i wyświetli komunikat dotyczący tego, które przedmioty spakowano, oraz jaka jest całkowita wartość spakowanego plecaka.
Specyfikacja problemu
Dane:
nazwy – tablica łańcuchów znaków
wartosci – tablica liczb naturalnych; wartości poszczególnych przedmiotów
wagi – tablica liczb naturalnych; wagi poszczególnych przedmiotów
n – liczba naturalna; liczba rodzajów przedmiotów
pojemnosc – liczba naturalna; maksymalna pojemność plecaka
Wynik:
spakowane przedmioty, których całkowita waga nie przekracza wartości przechowywanej w zmiennej pojemnosc, a których całkowita wartość jest największa wśród możliwych wypełnień plecaka rzeczami o takiej wadze, która nie przekracza wartości zmiennej pojemnosc; pakujemy po jednej sztuce przedmiotu każdego rodzaju
całkowita wartość spakowanego plecaka
Działanie programu przetestuj dla następujących danych:
Linia 1. nazwy znak równości otwórz nawias kwadratowy cudzysłów apaszka cudzysłów przecinek cudzysłów beret cudzysłów przecinek cudzysłów chusteczki cudzysłów przecinek cudzysłów dres cudzysłów przecinek cudzysłów espadryle cudzysłów zamknij nawias kwadratowy.
Linia 2. wartosci znak równości otwórz nawias kwadratowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias kwadratowy.
Linia 3. wagi znak równości otwórz nawias kwadratowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias kwadratowy.
Linia 4. pojemnosc znak równości 11.
Linia 5. n znak równości 5.
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Linia 1. def sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły dwukropek.
Linia 2. for i in range otwórz nawias okrągły n minus 1 zamknij nawias okrągły dwukropek.
Linia 3. for j in range otwórz nawias okrągły n minus i minus 1 zamknij nawias okrągły dwukropek.
Linia 4. if wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias ostrokątny wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy dwukropek.
Linia 5. wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy przecinek wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy.
Linia 6. indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy przecinek indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy.
Linia 8. def decyzyjnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły dwukropek.
Linia 9. wartoscDoWagi znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.
Linia 10. indeksy znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.
Linia 11. for i in range otwórz nawias okrągły n zamknij nawias okrągły dwukropek.
Linia 12. wartoscDoWagi kropka append otwórz nawias okrągły wartosci otwórz nawias kwadratowy i zamknij nawias kwadratowy prawy ukośnik wagi otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 13. indeksy kropka append otwórz nawias okrągły i zamknij nawias okrągły.
Linia 15. sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły.
Linia 17. wynik znak równości 0.
Linia 18. spakowane znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.
Linia 19. for i in range otwórz nawias okrągły n zamknij nawias okrągły dwukropek.
Linia 20. spakowane kropka append otwórz nawias okrągły 0 zamknij nawias okrągły.
Linia 22. for i in range otwórz nawias okrągły n zamknij nawias okrągły dwukropek.
Linia 23. indeks znak równości indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy.
Linia 24. if wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości pojemnosc dwukropek.
Linia 25. pojemnosc minus znak równości wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy.
Linia 26. wynik plus znak równości wartosci otwórz nawias kwadratowy indeks zamknij nawias kwadratowy.
Linia 27. print otwórz nawias okrągły cudzysłów Spakowano przedmiot cudzysłów plus nazwy otwórz nawias kwadratowy i zamknij nawias kwadratowy plus cudzysłów otwórz nawias okrągły indeks cudzysłów plus str otwórz nawias okrągły indeks zamknij nawias okrągły plus cudzysłów zamknij nawias okrągły cudzysłów zamknij nawias okrągły.
Linia 29. print otwórz nawias okrągły cudzysłów lewy ukośnik nWartosc spakowanych przedmiotow dwukropek cudzysłów przecinek wynik zamknij nawias okrągły.
Linia 31. nazwy znak równości otwórz nawias kwadratowy cudzysłów apaszka cudzysłów przecinek cudzysłów beret cudzysłów przecinek cudzysłów chusteczki cudzysłów przecinek cudzysłów dres cudzysłów przecinek cudzysłów espadryle cudzysłów zamknij nawias kwadratowy.
Linia 32. wartosci znak równości otwórz nawias kwadratowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias kwadratowy.
Linia 33. wagi znak równości otwórz nawias kwadratowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias kwadratowy.
Linia 34. pojemnosc znak równości 11.
Linia 35. n znak równości 5.
Linia 36. decyzyjnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły.
def sortuj(wartoscDoWagi, indeksy, n):
for i in range(n - 1):
for j in range(n - i - 1):
if wartoscDoWagi[j] < wartoscDoWagi[j + 1]:
wartoscDoWagi[j], wartoscDoWagi[j + 1] = wartoscDoWagi[j + 1], wartoscDoWagi[j]
indeksy[j], indeksy[j + 1] = indeksy[j + 1], indeksy[j]
def decyzyjnyPlecak(nazwy, wartosci, wagi, n, pojemnosc):
wartoscDoWagi = []
indeksy = []
for i in range(n):
wartoscDoWagi.append(wartosci[i] / wagi[i])
indeksy.append(i)
sortuj(wartoscDoWagi, indeksy, n)
wynik = 0
spakowane = []
for i in range(n):
spakowane.append(0)
for i in range(n):
indeks = indeksy[i]
if wagi[indeks] <= pojemnosc:
pojemnosc -= wagi[indeks]
wynik += wartosci[indeks]
print("Spakowano przedmiot " + nazwy[i] + " (indeks " + str(indeks) + ")")
print("\nWartosc spakowanych przedmiotow:", wynik)
nazwy = ["apaszka", "beret", "chusteczki", "dres", "espadryle"]
wartosci = [1, 5, 4, 1, 9]
wagi = [9, 1, 2, 8, 7]
pojemnosc = 11
n = 5
decyzyjnyPlecak(nazwy, wartosci, wagi, n, pojemnosc)
31
Ćwiczenie 3
Napisz program, który rozwiąże ciągłyproblem plecakowy i wyświetli komunikat dotyczący tego, które przedmioty spakowano w całości, które częściowo (oraz w jakiej części), oraz jaka jest całkowita wartość spakowanego plecaka.
Wyniki należy zaokrąglić do trzech miejsc po przecinku.
Specyfikacja problemu:
Dane:
nazwy – tablica łańcuchów znaków
wartosci – tablica liczb naturalnych; wartości poszczególnych przedmiotów
wagi – tablica liczb naturalnych; wagi poszczególnych przedmiotów
n – liczba naturalna; liczba rodzajów przedmiotów
pojemnosc – liczba naturalna; maksymalna pojemność plecaka
Wynik:
spakowane przedmioty, których całkowita waga nie przekracza wartości przechowywanej w zmiennej pojemnosc, a których całkowita wartość jest największa wśród możliwych wypełnień plecaka rzeczami o takiej wadze, która nie przekracza wartości zmiennej pojemnosc; pakujemy po jednej sztuce przedmiotu każdego rodzaju
całkowita wartość spakowanego plecaka
Działanie programu przetestuj dla następujących danych:
Linia 1. nazwy znak równości otwórz nawias kwadratowy cudzysłów apaszka cudzysłów przecinek cudzysłów beret cudzysłów przecinek cudzysłów chusteczki cudzysłów przecinek cudzysłów dres cudzysłów przecinek cudzysłów espadryle cudzysłów zamknij nawias kwadratowy.
Linia 2. wartosci znak równości otwórz nawias kwadratowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias kwadratowy.
Linia 3. wagi znak równości otwórz nawias kwadratowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias kwadratowy.
Linia 4. pojemnosc znak równości 11.
Linia 5. n znak równości 5.