Vi ho preso in parola e sono di nuovo quì

Questo è l'esercizio:
E' dato un esame con n esercizi e1, . . . , en. Per ogni i = 1, . . . , n l’esercizio i-esimo vale pi punti e richiede mi minuti per essere risolto. Dato in input il vettore contenente i valori pi , i = 1, . . . , n ed il vettore dei minuti mi, i = 1, . . . , n, si calcoli il minimo numero di minuti necessari per risolvere esercizi di punteggio totale P.

[Suggerimento: Sia M(i, p) il minimo numero di minuti richiesto per ottenere p punti, risolvendo
esercizi tra i primi i: e1, . . . , ei (noi siamo interessati a M(n, P)). Per fare ciò, si può risolvere
l’esercizio i-esimo, o non risolverlo. Il resto è facile....]


Usando uno pseudocodice, questa è la mia soluzione
codice:
Ordina gli esercizi in base ai punteggi in ordine decrescente
Calcola(i,p)
if (p=0) then return 0
if (i=0) then return ∞
else if M(i,p) non è definito
    M(i,p) <- min(Calcola(i-1,p), Calcola(i-1,p-pi)+mi)
return M(i,p)

Potrebbe andare?
Sono lontana mille miglia?
o ci sono vicina?

grazie