Dla n = 10 to i chamska rekurencja z powrotami zadziała bo przecież 2^n to będzie raptem 1024 przypadki ;] Wystarczy zrobić takiego niby-dfsa i zapisywać sobie maksymalną osiągniętą sumę wag na ścieżce
Swoją drogą to nie przesada po połowie semestru taki problem rozwiązać w ciągu tyg
hahahaha :D :D
Przykład zadań z 15-20 minutowych kartkówek które pisało się "za moich czasów" (połowa 1 semestru studiów). To tak żebyś miał na czym poćwiczyć:
Na liczbach naturalnych określono 3 rodzaje przekształceń:
a:=a+1
a:=3*a
a:=a div 2 (tylko jeżeli liczba a jest parzysta)
Napisać w program, który rozstrzyga czy jest mozliwe przekształcenie liczby a w b w serii
przekształceń o długości nie większej od n, warości a,b,n nalezy wczytać z klawiatury,
na przykład dla danych a=13 b=11 n=5 odpowiedz brzmi tak bo
13->14->7->21->22->11
dla danych a=13, b=6, n=5 odpowiedź brzmi nie
masz tablicę integerów od 1 do max, gdzie integery są wagami ciężarków i nie powtarzają się. Ciężarki można kłaść na obu szalkach wagi
a) napisz funkcję sprawdzającą, czy da się odważyć dany ciężar
b) napisz funkcję zwracającą z ilu ciężarków minimalnie można odważyć (oczywiście bez korzystania z poprzedniego, bo byłoby to nieefektywne)
Mamy tablice 1..max wypełnioną liczbami pierwszymi (różnymi i nie po kolei!). Podajemy jako parametr tablicę i przedział szukanych iloczynów. Funkcja zwraca ile liczb utworzonych przez iloczyny liczb z tablicy zawiera się w naszym przedziale