Data una griglia di altezza h e larghezza w riempita con numeri interi, si vuole trovare un percorso dall’angolo in alto a sinistra all’angolo in basso a destra che minimizzi la somma dei numeri incontrati. È consentito spostarsi solo verso destra o verso il basso.
3
2
1
3
1
9
2
3
9
1
5
4
Input
La prima riga dell’input contiene due interi h e w (1 ≤ h, w ≤ 1000).
Le successive h righe contengono w numeri interi separati da spazio , che rappresentano i valori nella griglia .
Output
Il programma deve stampare la somma minima possibile per muoversi dall’angolo in alto a sinistra a quello in basso a destra.
Lo stato in un problema di programmazione dinamica può essere rappresentato come un array bidimensionale.
Suggerimento 2
Questo array può rappresentare la soluzione ottimale fino a una certa coordinata (d[r][c] indica il miglior percorso per arrivare alla riga r e colonna c).
Perché l’approccio greedy non funziona in questo caso? Immagina di muoverti sempre nella direzione con il valore più piccolo: quale sarebbe il problema?