J'ai donc une matrice 2D, et je suis censé enregistrer le chemin qui donne le coût minimum. Je peux seulement descendre ou à droite. Exemple:Enregistrement du chemin de grille optimal pour un coût minimum
2 4 1
3 7 6
3 8 9
Output: right right down down
Mon code donne les réponses incorrectes mais je ne suis pas en mesure de déterminer pourquoi. J'ai également joint mon code ci-dessous:
public static List<String> optimalGridPath(int[][] grid) {
ArrayList<String> answers = new ArrayList<String>();
//TODO
int gridRows = grid.length-1;
int gridColumns = grid[0].length-1;
int solutionGrid[][] = new int[gridRows+1][gridColumns+1];
for (int i = 0; i <= gridRows; i++) {
for (int j = 0; j <= gridColumns; j++) {
if (i > 0 && j > 0)
solutionGrid[i][j] = grid[i][j] +
Math.min(solutionGrid[i-1][j], solutionGrid[i][j-1]);
else if (j == 0 && i == 0)
solutionGrid[i][j] = grid[i][j];
else if (j > 0)
solutionGrid[i][j] = grid[i][j] + solutionGrid[i][j-1];
else
solutionGrid[i][j] = grid[i][j] + solutionGrid[i-1][j];
}
}
while (gridRows != 0 && gridColumns != 0) {
if (gridColumns == 0) {
answers.add("down");
gridRows--;
}
else if (gridRows == 0) {
answers.add("right");
gridColumns--;
}
else {
if (solutionGrid[gridRows][gridColumns-1] <
solutionGrid[gridRows-1][gridColumns]) {
answers.add("right");
gridColumns--;
}
else {
answers.add("down");
gridRows--;
}
}
}
return answers;
}
C'est tellement bête de ne pas réaliser l'erreur ici ... ça fonctionne parfaitement maintenant. Merci! –