Cvičenie č. 9 - Dynamické programovanie
Úloha č. 1: Fibonacci
Aké sú problémy implementácie výpočtu n-tého Fibonacciho čísla nižšie?
Ako by ste túto implementáciu vylepšili?
public static int fibonacci(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
Úloha č. 2: Subset sum
Napíšte program, ktorý zistí, či je možne z množiny prirodzených čísel M vybrať podmnožinu so súčtom s a túto podmnožinu aj vypíše.
Príklad: Pre s = 7 a M = {1, 4, 9, 3} program vráti True a {3, 4}.
Začnite tým, že vypíšete True resp. False v prípade existencie takej podmnožiny resp. neexistencie.
Úloha č. 3: : Štvorcová podmatica
Napíšte program, ktorý pre zadanú 0/1 maticu vypíše velkosť jej najväčšej štvorcovej podmatice obsahujúcej len jednotky. Napr. pre maticu nižšie vypíše 3.
1 1 1 1 0
0 1 1 1 1
0 1 1 1 1
1 0 1 1 1
0 1 1 1 0
Domáca úloha č. 1 a 2: Maximální palindrom a Loupežníci
Zadania nájdete v CodEx-e.
Poznámka:
- na vyriešenie oboch úloh musíte použiť dynamické programovanie
- ak by vám to zas hádzalo time limit exceeded, tak to riešiť nebudem
Termín odovzdania: 7. 5. 2017(23:59)
Spôsob odovzdania: CodEx (odovzdávajte hlavný zdroják obsahujúci metódu main)
Počet bodov: 20 a 30