Aquest exercici explora l’ús de vectors per resoldre problemes de programació dinàmica.
Oh, no... Un altre cop! Feu una funció
fib :: Int -> Integer que, donat un
,
retorni
l’-èsim
nombre de Fibonaci.
Feu una funció
binomial :: Int -> Int -> Integer que, donat un enter
i un enter
,
retorni el coeficient binomial
,
és a dir, el nombre de formes en què es poden escollir
objectes d’entre un conjunt de
sense tenir en compte l’ordre.
Feu una funció bst :: Int -> Integer que, donat
un
,
retorni el nombre d’arbres binaris de cerca amb nodes
.
Per exemple, bst 3 és 5, perquè hi ha 5 arbres binaris
de cerca amb nodes 1,2,3:
1 1 2 3 3
\ \ / \ / /
2 3 1 3 1 2
\ / \ /
3 2 2 1
Feu una funció coins :: [Int] -> Int -> Int
que, donada una llista de
valors de monedes
i donat un valor
,
trobi el mínim nombre de monedes que sumen
.
Cada moneda es pot fer servir diversos (o cap) cops,
i
per a tot
.
Donades dues matrius amb dimensions i , el cost de l’algorisme habitual per multiplicar-les és . Per senzillesa, considerem que el cost és exactament .
Suposem que hem de calcular , on cadascuna de les és una matriu amb dimensions . Com que el producte de matrius és associatiu, es pot triar en quin ordre es fan les multiplicacions. Per exemple, per calcular , es podria fer , amb cost , o bé , amb cost , o bé tres altres ordres possibles.
Feu una funció mult :: [Int] -> Int que trobi el cost
mínim de calcular
,
donades les dimensions
.
Per a cada apartat, hi ha dos tipus de jocs de proves segons la talla de la seva entrada: els petits i els grans. Els petits es poden resoldre recursivament i dónen 5 punts cadascún. Els grans requereixen programació dinàmica i dónen 15 punts cadascún.
Autoria: Jordi Petit i Salvador Roura
Generació: 2026-02-03T17:07:51.397Z
© Jutge.org, 2006–2026.
https://jutge.org