diff --git a/slides/cours_8.md b/slides/cours_8.md index 4c2d63ac656649ef14b5a198f59e97505f5fcea7..2e194e37a761bdfab180c6f7c75d3a8bbe3b5ddc 100644 --- a/slides/cours_8.md +++ b/slides/cours_8.md @@ -189,16 +189,16 @@ void placer_devant(board, li, co); ```C // Calcule le nombre de solutions au problème des <n> reines -nbr_solutions(board, column, counter) - // pour chaque ligne - // si la case libre - // si column < n - 1 - // copier dans un nouveau board, y poser une reine - // et mettre à jour ce nouveau board - // nbr_solutions(nouveau_board, column+1, counter) - // sinon - // on a posé la n-ème et on a gagné - // counter += 1 +nbr_solutions(board, column, count) + // pour chaque ligne + // si la case libre + // si column < n - 1 + // copier dans un "new" board, y poser + // une reine et mettre à jour ce "new" board + // nbr_solutions(new_board, column+1, count) + // sinon + // on a posé la n-ème et on a gagné + // count += 1 ``` # Le code du problème des 8 reines (3/N) @@ -225,14 +225,14 @@ placer_devant(board, ligne, colonne) ```C // Calcule le nombre de solutions au problème des <N> reines -void nb_sol(int n, bool board_in[n][n], int co, int *ptr_cpt) { +void nb_sol(int n, bool board[n][n], int co, int *ptr_cpt) { for (int li = 0; li < n; li++) { if (board_in[li][co]) { - if (co < n - 1) { - bool board[n][n]; // alloué à chaque nouvelle tentative - copy(n, board_in, board); - prises_devant(n, board, li, co); - nb_sol(n, board, co+1, ptr_cpt); + if (co < n-1) { + bool new_board[n][n]; // alloué à chaque nouvelle tentative + copy(n, new_board_in, board); + prises_devant(n, new_board, li, co); + nb_sol(n, new_board, co+1, ptr_cpt); } else { *ptr_cpt = (*ptr_cpt)+1; } @@ -253,14 +253,14 @@ void nb_sol(int n, bool board_in[n][n], int co, int *ptr_cpt) { // prises sur la droite droite par une reine placée en <board(li,co)> void prises_devant(int n, bool board[n][n], int li, int co) { board[li][co] = false; // position de la reine - for (int j = 1; j < n - co; j++) { + for (int j = 1; j < n-co; j++) { // horizontale et diagonales à droite de la reine if (j <= li) { - board[li - j][co + j] = false; + board[li-j][co+j] = false; } - board[li][co + j] = false; - if (li + j < n) { - board[li + j][co + j] = false; + board[li][co+j] = false; + if (li+j < n) { + board[li+j][co+j] = false; } } } @@ -531,7 +531,8 @@ Soit `tab` le tableau à trier: ```C Pour tous les i = 0 à N-1 - tant que (tab[i] > que le sommet de G ou tab[i] < sommet de D) { + tant que (tab[i] > que le sommet de G + ou tab[i] < sommet de D) { dépiler G dans D ou de D dans G }