与春光共舞,独属于开发者们的春日场景是什么样的?
public void solveSudoku(char[][] board) { boolean[][] rows = new boolean[9][10]; boolean[][] cols = new boolean[9][10]; boolean[][] boxes = new boolean[9][10]; init(board, rows, cols, boxes); backtrack(board, 0, 0, rows, cols, boxes);}
private boolean backtrack(char[][] board, int row, int col, boolean[][] rows, boolean[][] cols, boolean[][] boxes) { if (row == 9) return true; if (board[row][col] != '.') { return backtrack(board, row + (col + 1)/9, (col + 1)%9, rows, cols, boxes); } int boxIdx = (row / 3) * 3 + col / 3; for (int num = 1; num if (rows[row][num] || cols[col][num] || boxes[boxIdx][num]) continue; // 剪枝 rows[row][num] = cols[col][num] = boxes[boxIdx][num] = true; board[row][col] = (char) ('0' + num); if (backtrack(board, row + (col + 1)/9, (col + 1)%9, rows, cols, boxes)) return true; board[row][col] = '.'; rows[row][num] = cols[col][num] = boxes[boxIdx][num] = false; } return false;}树木剪枝,待新发芽
赞6
踩0