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. string nazwy otwórz nawias kwadratowy zamknij nawias kwadratowy 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 wartosci otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 3. int wagi otwórz nawias kwadratowy zamknij nawias kwadratowy 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
R1IuojvbrAeqH
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. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. void sortuj otwórz nawias okrągły double wartoscDoWagi otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int indeksy otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. 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 7. 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 8. 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 9. swap otwórz nawias okrągły wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 10. swap otwórz nawias okrągły indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 11. zamknij nawias klamrowy.
Linia 12. zamknij nawias klamrowy.
Linia 13. zamknij nawias klamrowy.
Linia 14. zamknij nawias klamrowy.
Linia 16. int ogolnyPlecak otwórz nawias okrągły string nazwy otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int wartosci otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int wagi otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int n przecinek int pojemnosc zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. double wartoscDoWagi otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 18. int indeksy otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 19. 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 20. 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 21. indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości i średnik.
Linia 22. zamknij nawias klamrowy.
Linia 24. sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły średnik.
Linia 26. int wynik znak równości 0 średnik.
Linia 27. int spakowane otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 28. 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 29. spakowane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 30. zamknij nawias klamrowy.
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. 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 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. spakowane otwórz nawias kwadratowy indeks zamknij nawias kwadratowy plus plus średnik.
Linia 38. zamknij nawias klamrowy.
Linia 39. zamknij nawias klamrowy.
Linia 41. 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 42. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Liczba spakowanych sztuk przedmiotu cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny nazwy otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów otwórz nawias okrągły indeks cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny i otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów zamknij nawias okrągły dwukropek cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny spakowane otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 43. zamknij nawias klamrowy.
Linia 45. return wynik średnik.
Linia 46. zamknij nawias klamrowy.
Linia 48. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 49. string nazwy otwórz nawias kwadratowy zamknij nawias kwadratowy 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 50. int wartosci otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 51. int wagi otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias klamrowy średnik.
Linia 52. int pojemnosc znak równości 11 średnik.
Linia 53. int n znak równości 5 średnik.
Linia 54. int wynik znak równości ogolnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły średnik.
Linia 55. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów lewy ukośnik nWartosc spakowanych przedmiotow dwukropek cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny wynik otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 57. return 0 średnik.
Linia 58. zamknij nawias klamrowy.
#include <iostream>
using namespace std;
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]) {
swap(wartoscDoWagi[j], wartoscDoWagi[j + 1]);
swap(indeksy[j], indeksy[j + 1]);
}
}
}
}
int ogolnyPlecak(string nazwy[], int wartosci[], int wagi[], int n, int pojemnosc) {
double wartoscDoWagi[n];
int indeksy[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[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++) {
cout << "Liczba spakowanych sztuk przedmiotu " << nazwy[i] <<" (indeks " << i <<"): " << spakowane[i] << endl;
}
return wynik;
}
int main() {
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;
int wynik = ogolnyPlecak(nazwy, wartosci, wagi, n, pojemnosc);
cout << "\nWartosc spakowanych przedmiotow: " << wynik << endl;
return 0;
}
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. string nazwy otwórz nawias kwadratowy zamknij nawias kwadratowy 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 wartosci otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 3. int wagi otwórz nawias kwadratowy zamknij nawias kwadratowy 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. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. void sortuj otwórz nawias okrągły double wartoscDoWagi otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int indeksy otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. 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 7. 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 8. 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 9. swap otwórz nawias okrągły wartoscDoWagi otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek wartoscDoWagi otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 10. swap otwórz nawias okrągły indeksy otwórz nawias kwadratowy j zamknij nawias kwadratowy przecinek indeksy otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 11. zamknij nawias klamrowy.
Linia 12. zamknij nawias klamrowy.
Linia 13. zamknij nawias klamrowy.
Linia 14. zamknij nawias klamrowy.
Linia 16. int decyzyjnyPlecak otwórz nawias okrągły string nazwy otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int wartosci otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int wagi otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int n przecinek int pojemnosc zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. double wartoscDoWagi otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 18. int indeksy otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 19. 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 20. 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 21. indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości i średnik.
Linia 22. zamknij nawias klamrowy.
Linia 24. sortuj otwórz nawias okrągły wartoscDoWagi przecinek indeksy przecinek n zamknij nawias okrągły średnik.
Linia 26. int wynik znak równości 0 średnik.
Linia 27. int spakowane znak równości 0 średnik.
Linia 28. 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 29. int indeks znak równości indeksy otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 30. 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 31. pojemnosc minus znak równości wagi otwórz nawias kwadratowy indeks zamknij nawias kwadratowy średnik.
Linia 32. wynik plus znak równości wartosci otwórz nawias kwadratowy indeks zamknij nawias kwadratowy średnik.
Linia 33. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Spakowano przedmiot cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny nazwy otwórz nawias kwadratowy indeks zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów otwórz nawias okrągły indeks cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny indeks otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów zamknij nawias okrągły cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 34. zamknij nawias klamrowy.
Linia 35. zamknij nawias klamrowy.
Linia 37. return wynik średnik.
Linia 38. zamknij nawias klamrowy.
Linia 40. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 41. string nazwy otwórz nawias kwadratowy zamknij nawias kwadratowy 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 42. int wartosci otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 43. int wagi otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 9 przecinek 1 przecinek 2 przecinek 8 przecinek 7 zamknij nawias klamrowy średnik.
Linia 44. int pojemnosc znak równości 11 średnik.
Linia 45. int n znak równości 5 średnik.
Linia 47. int wynik znak równości decyzyjnyPlecak otwórz nawias okrągły nazwy przecinek wartosci przecinek wagi przecinek n przecinek pojemnosc zamknij nawias okrągły średnik.
Linia 49. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów lewy ukośnik nWartosc spakowanych przedmiotow dwukropek cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny wynik otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 51. return 0 średnik.
Linia 52. zamknij nawias klamrowy.
#include <iostream>
using namespace std;
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]) {
swap(wartoscDoWagi[j], wartoscDoWagi[j + 1]);
swap(indeksy[j], indeksy[j + 1]);
}
}
}
}
int decyzyjnyPlecak(string nazwy[], int wartosci[], int wagi[], int n, int pojemnosc) {
double wartoscDoWagi[n];
int indeksy[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 = 0;
for (int i = 0; i < n; i++) {
int indeks = indeksy[i];
if (wagi[indeks] <= pojemnosc) {
pojemnosc -= wagi[indeks];
wynik += wartosci[indeks];
cout << "Spakowano przedmiot " << nazwy[indeks] << " (indeks " << indeks <<")" << endl;
}
}
return wynik;
}
int main() {
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;
int wynik = decyzyjnyPlecak(nazwy, wartosci, wagi, n, pojemnosc);
cout << "\nWartosc spakowanych przedmiotow: " << wynik << endl;
return 0;
}
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. string nazwy otwórz nawias kwadratowy zamknij nawias kwadratowy 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 wartosci otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 1 przecinek 5 przecinek 4 przecinek 1 przecinek 9 zamknij nawias klamrowy średnik.
Linia 3. int wagi otwórz nawias kwadratowy zamknij nawias kwadratowy 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;