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

Zamiana funkcji na rekurencyjna

Object Storage Arubacloud
0 głosów
228 wizyt
pytanie zadane 6 maja 2017 w C i C++ przez Barteck125 Obywatel (1,120 p.)

Siemka, szukam pomocy w zmianie funkcji na rekurencyjną aby pozbyć się pętli. Ktoś ma może pomysł ? 

void funkcja(vector<int>& a, vector<int>& b, int tab[], int waga, int k) {//a mozliwosc b optymalny
	int suma;
	for (int j = k - 1; j >= 0; j--)///////////////////////////////////////////
	{
		suma = 0;
		a.clear();
		

		for (int i = j; i >= 0; i--)
		{
			if (tab[i] == waga)
			{
				a.push_back(tab[i]);
			}
			if (tab[i] > waga) continue;

			if (suma + tab[i] > waga)
				continue;

			suma += tab[i];
			a.push_back(tab[i]);
		}

		if (suma == waga)
			break;

		if (sumaW(b) < sumaW(a))
		{
			b.clear();

			for (int i = 0; i< a.size(); i++)
				b.push_back(a[i]); //kopiowanie wektora
		}


	}////////////////////////////////////////////////////////////////////

	if (suma != waga)
	{
		cout << "BRAK";
	}
	else
	{
		cout << "Istnieje taka  mozliwosc, nalezy spakowac elementy o masach: ";
		for (int i = 0; i< a.size(); i++)
		{
			cout << a[i] << " ";
		}
	}
}

 

komentarz 6 maja 2017 przez Evelek Nałogowiec (28,960 p.)
sumaW jest niezdefiniowany.
komentarz 6 maja 2017 przez Barteck125 Obywatel (1,120 p.)

sory :) to moja osobna funkcja zapomniałem o niej : 

int sumaW(vector<int>& v)
{
	int suma = 0;
	for (int i = 0; i< v.size(); i++)
	{
		suma += v[i];
	}

	return suma;
}

 

komentarz 6 maja 2017 przez Barteck125 Obywatel (1,120 p.)
Evelek poradzisz coś na to czy nie bardzo ?
komentarz 6 maja 2017 przez Evelek Nałogowiec (28,960 p.)
Można by kombinować, tylko zastanawiam się czy to się opłaci i czy to jest uzasadnione w tej sytuacji. Trochę ciężko by było tu wpakować rekurencję. Poza tym pamiętaj o stack overflow - jeśli nie wiesz co to, to poczytaj ---> http://gynvael.coldwind.pl/?id=450
komentarz 6 maja 2017 przez Barteck125 Obywatel (1,120 p.)
ogólnie chciałem rozwiazać problem plecakowy i robiąc tak myślałem ze uda mi się przerobić na rekurencje, a teraz okazuje sie że troche nie wiem co dalej. Dzięki za pomoc w każdym razie

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 233 wizyt
pytanie zadane 7 listopada 2016 w C i C++ przez mistrzuniu1 Użytkownik (600 p.)
0 głosów
2 odpowiedzi 826 wizyt
0 głosów
0 odpowiedzi 296 wizyt
pytanie zadane 15 października 2019 w C i C++ przez four Użytkownik (720 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...