Salut tuturor,
Scriu in speranta ca voi gasi un ajutor de la cineva mult mai experimentat in algoritmica decat mine. Problema imi da batai de cap de cateva zile si as vrea sa-i dau de cap cumva.
Problema mea vine cam asa: am un vector de elemente
elem = (1, 3, 5) si un cost asociat fiecarui element
cost = (52, 145, 251). Mai am o variabila
total care este 6 sa zic. Pot sa iau orice combinatie de elemente (se pot si repeta) cu conditia ca la sfarsit, suma elementelor sa fie EXACT 6 (intotdeauna va exista cel putin o varianta ca asta). In caz ca sunt mai multe variante optime din punct de vedere al numarului de elemente (cat mai putin elemente folosite), vreau sa se ia varianta cu cost minim.
Din amintirile mele prafuite de algoritmica am redus problema la unul din doi algoritmi clasici dar care trebuie modificati cumva:
1) Prima incercare a mea a fost problema rucsacului (unbounded knapsack). Ar fi fost foarte buna, insa imi returneaza costul maxim, iar daca incerc sa-l schimb in minim nu mai obtin exact numarul dat de variabila
total (adica 6 in cazul de fata)
2) A doua incercare a fost unul din algoritmii Coin Changing. Cum programarea dinamica nu mi-ar putea oferi decat unul din rezultatele optim din punct de vedere al numarului de elemente (si nu pot verifica si celelalte variante pentru cost minim cu algoritmul clasic -- poate stie altcineva o altfel de implementare?), am incercat algoritmul de aici
http://mitpress.mit.edu/sicp/full-text/sicp/book/node16.html care imi numara toate variantele posibile de a scrie
total ca suma de elemente insa nu reusesc sa-l modific pentru a-mi retine si solutiile efective.
Va multumesc anticipat si orice fel de comentariu este bine venit.