Bonjour,
Un topic a déjà été posté sur cet exercice il y a peu, mais je mets quand même l'énoncé:
Gégé la grenouille est très gloutonne. Elle vit dans un marais (représenté par une grille en deux dimensions), et chaque matin, ses informateurs (de leurs noms, Gaga et Gigi) lui donnent un plan du marais, avec la quantité de nourriture disponible sur chaque case.
Le but de Gégé va être d'ingurgiter le plus de nourriture possible, en se déplaçant de cases en cases dans son marais. Dès que Gégé est sur une case, elle ingurgite toute la nourriture disponible sur cette case. En temps normal, Gégé peut se déplacer d'une case à partir de la case où elle est, que ce soit horizontalement, verticalement ou en diagonale (bien sûr, sans sortir du marais). Mais certaines cases du marais sont magiques, et dès que Gégé tombe sur une telle case, elle peut se déplacer K fois (K est donné en entrée) sans limitation de nombre de cases (toujours horizontalement, verticalement ou en diagonale).
Autre caractéristique importante du déplacement de Gégé : elle ne peut aller que sur des cases dont la quantité de nourriture disponible (initiale) est strictement supérieure a la quantite de nourriture initiale de la case courante de Gege. (Autrement dit, Gege veut manger de plus en plus, elle est tres gloutonne). Entre autres choses, cela implique que Gégé ne peut jamais revenir sur des cases par où elle est déjà passée.
Ecrivez un programme pour aider Gégé à determiner la quantité maximale de nourriture qu'elle peut ingérer (elle est très
très gloutonne !), en connaissant sa position initiale, la quantité de nourriture disponible sur chaque case, la
position des cases magiques, et le paramètre K.
ENTREE
- Sur la première ligne : un nombre N (1- Sur les N lignes suivantes, N entiers, représentant la quantité de nourriture disponible sur chaque case. (ces nombres seront entre 0 et 100)
- Sur une ligne : le nombre M de cases magiques. (1 - Sur les M lignes suivantes : deux entiers, séparés par un espace, indiquant respectivement la ligne et la colonne d'une case magique.
- Sur la dernière ligne, deux entiers, séparés par un espace, indiquant respectivement la ligne et la colonne de la
case de départ de Gégé la grenouille.
Note : toutes les coordonnées du problème commencent à 0, et seront valides. Gégé mange la nourriture disponible sur sa case de départ.
SORTIE
Un entier, la quantité maximale de nourriture que peut ingérer Gégé, si elle se débrouille au mieux.
Note : La position finale de Gégé peut être quelconque ; Gégé dispose de son hélicoptère personnel.
Sur le premier exemple, je n'ai pas de problème, mon algorithme trouve le même résultat.
Mais pour le deuxième, là ça bloque.
Je dois avoir un erreur dans mon interprétation du passage sur les cases magiques:
Mais certaines cases du marais sont magiques, et dès que Gégé tombe sur une telle case, elle peut se déplacer K fois (K est donné en entrée) sans limitation de nombre de cases (toujours horizontalement, verticalement ou en diagonale).
Donc en gros, dès qu'on est sur une case magique, on peut se déplacer K fois n'importe où dans la map, et les K
s'additionnent.
Si je suis ce raisonnement, j'obtiens alors pour le deuxième exemple un résultat de 45:
5 2
1 2 4 4 5
1 2 3 4 5
1 2 3 4 10
5 4 3 2 1
5 4 3 2 20
2
0 2
3 0
0 0
On a K = 2, 2 cases magiques, aux points ( 2, 0 ) et ( 3, 0 ).
Voici le chemin que je réalise pour arriver à 45:
( 0, 0 ), s = 1
( 1, 0 ), s = 3
( 2, 1 ), s = 6
( 2, 0 ), s = 10, case magique avec 2 sauts possibles
( 0, 3 ), s = 15, case magique, 3 sauts
( 4, 2 ), s = 25, 2 sauts restants
( 4, 4 ), s = 45, 1 saut restant
Fin
Merci d'avance pour votre aide