Advertisement
Guest User

11errores

a guest
May 27th, 2015
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. public class Sudoku {
  2. static void solveSudoku(int[][] sudoku){
  3. int row, column;
  4.  
  5. // If there is no unassigned location, we are done
  6. if (FreeLocation(sudoku, row, column))
  7. return true;
  8. for (int number = 1; number <= sudoku.length; number++)
  9. {
  10. if (CheckIfRepeated(sudoku, row, column, number))
  11. {
  12. sudoku[row][column] = number;
  13.  
  14. if (solveSudoku(sudoku))
  15. return true;
  16.  
  17. /*backtrack*/
  18. sudoku[row][column] = 0;
  19. }
  20. }
  21. return false;
  22. }
  23.  
  24. private static bool FreeLocation(int[][] sudoku) {
  25. for (int row = 0; row < sudoku.length; row++) // 9
  26. for (int column = 0; column < sudoku.length; column++) // 9
  27. if (sudoku[row][column] == 0)
  28. return true;
  29. return false;
  30. }
  31.  
  32.  
  33.  
  34. /* for the next 3 functions, "false" means that the value was found, and "true" means the opposite.
  35. I did it so for a better use of the "if" statement: if the three are true,
  36. then it's safe to use the value of "number" in CheckIfRepeated*/
  37.  
  38. private static bool IsNumberRepeatedInRow(int[][] sudoku, int row, int column, int number) {
  39. for (column = 0; column < sudoku.length ; column++)
  40. if (sudoku[row][column] == number)
  41. return false;
  42. return true;
  43. }
  44.  
  45. private static bool IsNumberRepeatedInColumn(int[][] sudoku, int row, int column, int number) {
  46. for (row = 0; row < sudoku.length ; row++)
  47. if (sudoku[row][column] == number)
  48. return false;
  49. return true;
  50. }
  51.  
  52. private static bool IsNumberRepeatedInSquare(int[][] sudoku, int row, int column, int number){
  53. for (int rowh = row - row%3 ; rowh < row+3 ; rowh++) {
  54. for(int colh = column - column%3 ; colh < column+3 ; colh++) {
  55. if (sudoku[rowh][colh] == number)
  56. return false;
  57. return true;
  58. }
  59. }
  60. }
  61.  
  62. private static bool CheckIfRepeated(int[][] sudoku, int row, int column, int number) {
  63. if (IsNumberRepeatedInRow(sudoku, row, column, number) &&
  64. IsNumberRepeatedInColumn(sudoku, row, column, number) &&
  65. IsNumberRepeatedInSquare(sudoku, row, column, number));
  66. return true;
  67. return false;
  68. }
  69.  
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement