Napisz program, który rozwiąże ogólny problem plecakowy i wyświetli komunikat informujący o tym, 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. String otwórz nawias kwadratowy zamknij nawias kwadratowy nazwy znak równości otwórz nawias klamrowy 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 klamrowy średnik.
Linia 2. int otwórz nawias kwadratowy zamknij nawias kwadratowy wartosci znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 3. int otwórz nawias kwadratowy zamknij nawias kwadratowy wagi znak równości otwórz nawias klamrowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias klamrowy średnik.
Linia 4. int pojemnosc znak równości 11 średnik.
Linia 5. int n znak równości 5 średnik.
String[] nazwy = {"apaszka", "beret", "chusteczki", "dres", "espadryle"};
int[] wartosci = {1, 5, 4, 1, 9};
int[] wagi = {9, 1, 2, 8, 7};
int pojemnosc = 11;
int n = 5;
Przykładowe wyniki dla podanych danych:
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
R1bETaaZP7ozj
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. import java kropka util kropka Arrays średnik.
Linia 3. public class Main otwórz nawias klamrowy.
Linia 4. public static void sortuj otwórz nawias okrągły double otwórz nawias kwadratowy zamknij nawias kwadratowy wartoscDoWagi przecinek int otwórz nawias kwadratowy zamknij nawias kwadratowy indeksy przecinek int n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n minus 1 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny n minus i minus 1 średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. if otwórz nawias okrągły 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 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. double tempWartosc znak równości wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 9. wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy średnik.
Linia 10. wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości tempWartosc średnik.
Linia 12. int tempIndeks znak równości indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 13. indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy średnik.
Linia 14. indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości tempIndeks średnik.
Linia 15. zamknij nawias klamrowy.
Linia 16. zamknij nawias klamrowy.
Linia 17. zamknij nawias klamrowy.
Linia 18. zamknij nawias klamrowy.
Linia 20. public static void ogolnyPlecak otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy nazwy przecinek int otwórz nawias kwadratowy zamknij nawias kwadratowy wartosci przecinek int otwórz nawias kwadratowy zamknij nawias kwadratowy wagi przecinek int n przecinek int pojemnosc zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. double otwórz nawias kwadratowy zamknij nawias kwadratowy wartoscDoWagi znak równości new double otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 22. int otwórz nawias kwadratowy zamknij nawias kwadratowy indeksy znak równości new int otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 23. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 24. wartoscDoWagi otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości otwórz nawias okrągły double zamknij 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 średnik.
Linia 25. indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości i średnik.
Linia 26. zamknij nawias klamrowy.
Linia 28. sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły średnik.
Linia 30. int wynik znak równości 0 średnik.
Linia 31. int otwórz nawias kwadratowy zamknij nawias kwadratowy spakowane znak równości new int otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 33. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 34. spakowane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 35. zamknij nawias klamrowy.
Linia 37. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 38. int indeks znak równości indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 39. while otwórz nawias okrągły wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości pojemnosc zamknij nawias okrągły otwórz nawias klamrowy.
Linia 40. pojemnosc minus znak równości wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy średnik.
Linia 41. wynik plus znak równości wartosci otwórz nawias kwadratowy indeks zamknij nawias kwadratowy średnik.
Linia 42. spakowane otwórz nawias kwadratowy indeks zamknij nawias kwadratowy plus plus średnik.
Linia 43. zamknij nawias klamrowy.
Linia 44. zamknij nawias klamrowy.
Linia 46. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 47. System kropka out kropka println 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 i plus cudzysłów zamknij nawias okrągły dwukropek cudzysłów plus spakowane otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 48. zamknij nawias klamrowy.
Linia 50. System kropka out kropka println otwórz nawias okrągły cudzysłów lewy ukośnik nWartosc spakowanych przedmiotow dwukropek cudzysłów plus wynik zamknij nawias okrągły średnik.
Linia 51. zamknij nawias klamrowy.
Linia 53. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 54. String otwórz nawias kwadratowy zamknij nawias kwadratowy nazwy znak równości otwórz nawias klamrowy 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 klamrowy średnik.
Linia 55. int otwórz nawias kwadratowy zamknij nawias kwadratowy wartosci znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 56. int otwórz nawias kwadratowy zamknij nawias kwadratowy wagi znak równości otwórz nawias klamrowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias klamrowy średnik.
Linia 57. int pojemnosc znak równości 11 średnik.
Linia 58. int n znak równości 5 średnik.
Linia 60. ogolnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły średnik.
Linia 61. zamknij nawias klamrowy.
Linia 62. zamknij nawias klamrowy.
import java.util.Arrays;
public class Main {
public static void sortuj(double[] wartoscDoWagi, int[] indeksy, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (wartoscDoWagi[j] < wartoscDoWagi[j + 1]) {
double tempWartosc = wartoscDoWagi[j];
wartoscDoWagi[j] = wartoscDoWagi[j + 1];
wartoscDoWagi[j + 1] = tempWartosc;
int tempIndeks = indeksy[j];
indeksy[j] = indeksy[j + 1];
indeksy[j + 1] = tempIndeks;
}
}
}
}
public static void ogolnyPlecak(String[] nazwy, int[] wartosci, int[] wagi, int n, int pojemnosc) {
double[] wartoscDoWagi = new double[n];
int[] indeksy = new int[n];
for (int i = 0; i < n; i++) {
wartoscDoWagi[i] = (double) wartosci[i] / wagi[i];
indeksy[i] = i;
}
sortuj(wartoscDoWagi, indeksy, n);
int wynik = 0;
int[] spakowane = new int[n];
for (int i = 0; i < n; i++) {
spakowane[i] = 0;
}
for (int i = 0; i < n; i++) {
int indeks = indeksy[i];
while (wagi[indeks] <= pojemnosc) {
pojemnosc -= wagi[indeks];
wynik += wartosci[indeks];
spakowane[indeks]++;
}
}
for (int i = 0; i < n; i++) {
System.out.println("Liczba spakowanych sztuk przedmiotu " + nazwy[i] + " (indeks " + i + "): " + spakowane[i]);
}
System.out.println("\nWartosc spakowanych przedmiotow: " + wynik);
}
public static void main(String[] args) {
String[] nazwy = {"apaszka", "beret", "chusteczki", "dres", "espadryle"};
int[] wartosci = {1, 5, 4, 1, 9};
int[] wagi = {9, 1, 2, 8, 7};
int pojemnosc = 11;
int n = 5;
ogolnyPlecak(nazwy, wartosci, wagi, n, pojemnosc);
}
}
31
Ćwiczenie 2
Napisz program, który rozwiąże decyzyjnyproblem plecakowy i wyświetli komunikat informujący o tym, 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. String otwórz nawias kwadratowy zamknij nawias kwadratowy nazwy znak równości otwórz nawias klamrowy 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 klamrowy średnik.
Linia 2. int otwórz nawias kwadratowy zamknij nawias kwadratowy wartosci znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 3. int otwórz nawias kwadratowy zamknij nawias kwadratowy wagi znak równości otwórz nawias klamrowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias klamrowy średnik.
Linia 4. int pojemnosc znak równości 11 średnik.
Linia 5. int n znak równości 5 średnik.
String[] nazwy = {"apaszka", "beret", "chusteczki", "dres", "espadryle"};
int[] wartosci = {1, 5, 4, 1, 9};
int[] wagi = {9, 1, 2, 8, 7};
int pojemnosc = 11;
int n = 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. import java kropka util kropka Arrays średnik.
Linia 3. public class Main otwórz nawias klamrowy.
Linia 4. public static void sortuj otwórz nawias okrągły double otwórz nawias kwadratowy zamknij nawias kwadratowy wartoscDoWagi przecinek int otwórz nawias kwadratowy zamknij nawias kwadratowy indeksy przecinek int n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n minus 1 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny n minus i minus 1 średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. if otwórz nawias okrągły 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 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. double tempWartosc znak równości wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 9. wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy średnik.
Linia 10. wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości tempWartosc średnik.
Linia 12. int tempIndeks znak równości indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 13. indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy średnik.
Linia 14. indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości tempIndeks średnik.
Linia 15. zamknij nawias klamrowy.
Linia 16. zamknij nawias klamrowy.
Linia 17. zamknij nawias klamrowy.
Linia 18. zamknij nawias klamrowy.
Linia 20. public static void decyzyjnyPlecak otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy nazwy przecinek int otwórz nawias kwadratowy zamknij nawias kwadratowy wartosci przecinek int otwórz nawias kwadratowy zamknij nawias kwadratowy wagi przecinek int n przecinek int pojemnosc zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. double otwórz nawias kwadratowy zamknij nawias kwadratowy wartoscDoWagi znak równości new double otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 22. int otwórz nawias kwadratowy zamknij nawias kwadratowy indeksy znak równości new int otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 23. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 24. wartoscDoWagi otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości otwórz nawias okrągły double zamknij 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 średnik.
Linia 25. indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości i średnik.
Linia 26. zamknij nawias klamrowy.
Linia 28. sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły średnik.
Linia 30. int wynik znak równości 0 średnik.
Linia 32. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 33. int indeks znak równości indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 34. if otwórz nawias okrągły wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości pojemnosc zamknij nawias okrągły otwórz nawias klamrowy.
Linia 35. pojemnosc minus znak równości wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy średnik.
Linia 36. wynik plus znak równości wartosci otwórz nawias kwadratowy indeks zamknij nawias kwadratowy średnik.
Linia 37. System kropka out kropka println otwórz nawias okrągły cudzysłów Spakowano przedmiot cudzysłów plus nazwy otwórz nawias kwadratowy indeks zamknij nawias kwadratowy plus cudzysłów otwórz nawias okrągły indeks cudzysłów plus indeks plus cudzysłów zamknij nawias okrągły cudzysłów zamknij nawias okrągły średnik.
Linia 38. zamknij nawias klamrowy.
Linia 39. zamknij nawias klamrowy.
Linia 41. System kropka out kropka println otwórz nawias okrągły cudzysłów lewy ukośnik nWartosc spakowanych przedmiotow dwukropek cudzysłów plus wynik zamknij nawias okrągły średnik.
Linia 42. zamknij nawias klamrowy.
Linia 44. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 45. String otwórz nawias kwadratowy zamknij nawias kwadratowy nazwy znak równości otwórz nawias klamrowy cudzysłów aparat cudzysłów przecinek cudzysłów baterie cudzysłów przecinek cudzysłów czajnik cudzysłów przecinek cudzysłów dmuchany materac cudzysłów przecinek cudzysłów ekologiczny prysznic cudzysłów przecinek cudzysłów filtr cudzysłów przecinek cudzysłów garnuszek cudzysłów zamknij nawias klamrowy średnik.
Linia 46. int otwórz nawias kwadratowy zamknij nawias kwadratowy wartosci znak równości otwórz nawias klamrowy 4 przecinek 15 przecinek 6 przecinek 13 przecinek 5 przecinek 12 przecinek 3 zamknij nawias klamrowy średnik.
Linia 47. int otwórz nawias kwadratowy zamknij nawias kwadratowy wagi znak równości otwórz nawias klamrowy 8 przecinek 3 przecinek 2 przecinek 6 przecinek 15 przecinek 16 przecinek 2 zamknij nawias klamrowy średnik.
Linia 48. int n znak równości 7 średnik.
Linia 49. int pojemnosc znak równości 21 średnik.
Linia 51. decyzyjnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły średnik.
Linia 52. zamknij nawias klamrowy.
Linia 53. zamknij nawias klamrowy.
import java.util.Arrays;
public class Main {
public static void sortuj(double[] wartoscDoWagi, int[] indeksy, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (wartoscDoWagi[j] < wartoscDoWagi[j + 1]) {
double tempWartosc = wartoscDoWagi[j];
wartoscDoWagi[j] = wartoscDoWagi[j + 1];
wartoscDoWagi[j + 1] = tempWartosc;
int tempIndeks = indeksy[j];
indeksy[j] = indeksy[j + 1];
indeksy[j + 1] = tempIndeks;
}
}
}
}
public static void decyzyjnyPlecak(String[] nazwy, int[] wartosci, int[] wagi, int n, int pojemnosc) {
double[] wartoscDoWagi = new double[n];
int[] indeksy = new int[n];
for (int i = 0; i < n; i++) {
wartoscDoWagi[i] = (double) wartosci[i] / wagi[i];
indeksy[i] = i;
}
sortuj(wartoscDoWagi, indeksy, n);
int wynik = 0;
for (int i = 0; i < n; i++) {
int indeks = indeksy[i];
if (wagi[indeks] <= pojemnosc) {
pojemnosc -= wagi[indeks];
wynik += wartosci[indeks];
System.out.println("Spakowano przedmiot " + nazwy[indeks] + " (indeks " + indeks + ")");
}
}
System.out.println("\nWartosc spakowanych przedmiotow: " + wynik);
}
public static void main(String[] args) {
String[] nazwy = {"aparat", "baterie", "czajnik", "dmuchany materac", "ekologiczny prysznic", "filtr", "garnuszek"};
int[] wartosci = {4, 15, 6, 13, 5, 12, 3};
int[] wagi = {8, 3, 2, 6, 15, 16, 2};
int n = 7;
int pojemnosc = 21;
decyzyjnyPlecak(nazwy, wartosci, wagi, n, pojemnosc);
}
}
31
Ćwiczenie 3
Napisz program, który rozwiąże ciągłyproblem plecakowy i wyświetli komunikat informujący o tym, które przedmioty spakowano w całości, które częściowo (oraz w jakiej części) i 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. String otwórz nawias kwadratowy zamknij nawias kwadratowy nazwy znak równości otwórz nawias klamrowy 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 klamrowy średnik.
Linia 2. int otwórz nawias kwadratowy zamknij nawias kwadratowy wartosci znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 3. int otwórz nawias kwadratowy zamknij nawias kwadratowy wagi znak równości otwórz nawias klamrowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias klamrowy średnik.
Linia 4. int pojemnosc znak równości 11 średnik.
Linia 5. int n znak równości 5 średnik.
String[] nazwy = {"apaszka", "beret", "chusteczki", "dres", "espadryle"};
int[] wartosci = {1, 5, 4, 1, 9};
int[] wagi = {9, 1, 2, 8, 7};
int pojemnosc = 11;
int n = 5;