• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

plecakowy problem pomocy !

Object Storage Arubacloud
0 głosów
1,518 wizyt
pytanie zadane 6 maja 2017 w C i C++ przez Barteck125 Obywatel (1,120 p.)
Witam, czy ma ktoś pomysł jak rozwiązać główną funkcje problemu plecakowego w sposób rekurencyjny bez użycia pętli. Proszę o jakieś wskazówki albo jęśli to możliwe to krótki kod do analizy. Dziękuje i pozdrawiam
komentarz 8 maja 2017 przez Ehlert Ekspert (212,670 p.)
Nie wiem skąd bierzecie takie zadania. Wyciskanie rekurencji tam gdzie nie trzeba, wręcz nie wolno.
komentarz 8 maja 2017 przez Fenix Nałogowiec (26,750 p.)
Pewnie szkoła, studia. Tam zazwyczaj również tłumaczą rekurencje na abstrakcyjnym przykładzie ciągu Fibo ( a każdy kto próbuje tłumaczyć w ten sposób powinien umrzeć ), gdzie dużo prostszym bardziej logicznym przykładem do zrozumienia jest odliczanie np. od 10 do 0. Nigdy nie zrozumiem dlaczego ludzie lubią sobie ( w sumie to bardziej innym ) utrudniać życie.
1
komentarz 8 maja 2017 przez Ehlert Ekspert (212,670 p.)
Kwestia systemu edukacji. Zamiast zmienić program i wywalić wszystkich dziadów od informatyki rocznik 60 + specjalizacja Win95, to lepiej było likwidować gimnazja.

2 odpowiedzi

+1 głos
odpowiedź 7 maja 2017 przez d0n Mądrala (6,440 p.)

Każdą pętle można przerobić na rekurencję, to nie jest chyba za trudnę, czy możesz napisać coś więcej o problemie? Bo w gruncie rzeczy jeżeli chcemy przejść po elementach tablicy od n-tego do zerowego, to funkcja wyglądała by tak:


void rek ( int n. inne_argumenty... )
{
      if ( n == -1 ) return;
      // przetwarzamy n-ty element tablicy
      rek ( n - 1, inne_argumenty... );
}

Bo rozumiem, że mówimy o takim algorytmie dla problemu plecakowego, który dla każdego przedmiotu iteruje się od maksymalnej pojemności do najmniejszej? Wtedy w innych argumentach bedzie wartosc akt przedmiotu, a cala rekurencja bedzie wywolywana w petli przechodzacej po przedmiotach. Jeśli i tej petli chcemy sie pozbyc, to stworzymy kolejna podobna funkcje, gdzie w "//przetwarzamy..." bedzie wywolanie rek dla danego elementu...
 

 

 

+1 głos
odpowiedź 7 maja 2017 przez Wiciorny Ekspert (269,710 p.)

Może się przyda :  Rozwiązanie oparte o rekurencje ... po prostu programowanie dynamiczne 



int knapSack(int W, int wt[], int val[], int n)
{
   // Base Case
   if (n == 0 || W == 0)
       return 0;
 
   // If weight of the nth item is more than Knapsack capacity W, then
   // this item cannot be included in the optimal solution
   if (wt[n-1] > W)
       return knapSack(W, wt, val, n-1);
 
   // Return the maximum of two cases: 
   // (1) nth item included 
   // (2) not included
   else return max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1),
                    knapSack(W, wt, val, n-1)
                  );
}

 

Podobne pytania

0 głosów
1 odpowiedź 845 wizyt
0 głosów
2 odpowiedzi 5,099 wizyt
pytanie zadane 14 listopada 2017 w Java przez barteku12 Obywatel (1,340 p.)
0 głosów
1 odpowiedź 94 wizyt
pytanie zadane 16 sierpnia 2017 w Offtop przez Zdzisław Stefan Nowicjusz (190 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...