Intr-un restaurant un meniu este format din 3 feluri de mancare. Exista patru preparate culinare pt felul 1 , cinci preparate culinare pt felul 2 si trei preparare culinare pt felul 3. Fiecare preparat culinar are un pret si un numar de calorii. Sa se genereze toate meniurile pe care le poate comanda o persoana , care sa nu depășească suma s si numarul de calorii c. Datele de citesc dintr-un fisier text , astfel : de pe primul rand, suma s si numarul de calorii, de le randul urmator , in ordine, pretul fiecarui preparat culinar ,si , de pe ultimul rand , in aceeasi ordine , caloriile fiecarui preparat culinar.
Ajutor , va rog!
Răspunsuri la întrebare
Răspuns:
1. Citim suma s și numărul de calorii c din fișierul text.
2. Citim prețurile și numărul de calorii pentru fiecare preparat culinar și le stocăm într-o matrice.
3. Initializam o lista goală în care vom salva meniurile care respectă condițiile.
4. Definim o funcție recursive care primește că argumente lista meniurilor, suma rămasă disponibilă și numărul de calorii rămase.
5. În funcția recursive, pentru fiecare preparat culinar din felul de mâncare curent, verificăm dacă adăugarea să respectă condițiile de suma s și număr de calorii c. Dacă da, adăugăm preparatul la meniul curent și continuăm recursiv cu felul următor de mâncare, altfel trecem la următorul preparat din felul de mâncare curent.
6.După ce am terminat de parcurs toate preparatele pentru ultimul fel de mâncare, adăugăm meniul curent la lista meniurilor care respectă condițiile.
7. Întoarcem lista meniurilor generate la finalul execuției funcției.
Explicație:
Mai sus am folosit un algoritm, folosind metoda numită backtracking.
Sper că te-am ajutat!
bteiosanu