Một bàn cờ Sudoku |
Đáp án cho bàn cờ này như sau:
Sử dụng giải thuật quay lui để giải bài toán này, ta có đoạn mã giả như sau:
function backtrack(position){ if (isEndOfGrid == true ){ // Empty cells filled. Solution found. Abort return true ; } foreach (x from 1 ... 9){ grid[position] = x; if (gridIsValid == true ){ // Check for collisions if (backtrack(nextPosition) == true ){ // Move to next empty cell return true ; // Empty cells filled. Solution found. Abort. } } } grid[position] = NULL; // Empties cell return false ; //Solution not found. Backtrack. } |
Thuật toán quay lui thực hiện các bước như sau:
Chương trình Demo Giải trò chơi Sudoku bằng thuật toán quay lui do Vương Huỳnh Long viết: