Énoncé
On se donne un champ carré, que l'on découpe pour simplifier en une matrice de N par N cases.
Ce champ est magique et quiconque s'y déplace sans respecter les règles est condamné à passer le restant de ses jours à calculer des primitives.
Le but de cet exercice est de se déplacer dans ce champ en ramassant le moins de
cailloux possible. Les cases de la matrice représentent le nombre de cailloux à cet endroit du
champ. On part du coin supérieur gauche du champ et on cherche à se rendre dans
le coin inférieur droit. Les contraintes sont les suivantes :
- on ne se déplace que vers le bas ou vers la droite, sans pouvoir remonter
on revenir vers la gauche
- quand on passe sur une case de la matrice, on ramasse nécessairement tous
les cailloux qui s'y trouvent
Entrée
L'entrée du programme est la suivante :
- la taille du champ (N), qui sera toujours limitée à 300 maximum
- les valeurs de chaque case de la matrice, ligne par ligne, avec un retour
à la ligne à la fin. Le champ étant magique, le nombre de cailloux sur une case peut-être négatif. On suppose d'ailleurs avoir initialement une réserve infinie de cailloux sur soi.
Sortie
La sortie sera le nombre de cailloux minimum que l'on doit ramasser (possiblement négatif) pour atteindre la case inférieure droite.
Exemples
Squelette CamlLight
Squelette OCaml