标签:.com private code tab font board system 判断 循环
package leetcode_50; /*** * * @author pengfei_zheng * 求解数独问题 */ public class Solution37 { public static void solveSudoku(char[][] board) { if(board==null ||board.length ==0) return; else solve(board); } private static boolean solve(char[][] board) { for(int i = 0 ; i < 9;i++){ for(int j = 0 ; j < 9;j++){ if(board[i][j]==‘.‘){ for(char c = ‘1‘; c<=‘9‘;c++){ if(isValid(board,i,j,c)){ board[i][j]=c; if(solve(board)) return true; else board[i][j]=‘.‘; } } return false; } } } return true; } private static boolean isValid(char[][] board, int row, int column, char c) { for(int i = 0 ; i < 9; i ++){ if(board[row][i]==c) return false; if(board[i][column]==c) return false; if(board[3 * (row / 3) + i / 3][ 3 * (column / 3) + i % 3] != ‘.‘ && board[3 * (row / 3) + i / 3][3 * (column / 3) + i % 3] == c) return false; //check 3*3 block } return true; } public static void main(String[]args){ long start = System.currentTimeMillis(); char[][] board={{‘8‘,‘.‘,‘.‘,‘.‘,‘.‘,‘.‘,‘.‘,‘.‘,‘.‘}, {‘.‘,‘.‘,‘3‘,‘6‘,‘.‘,‘.‘,‘.‘,‘.‘,‘.‘}, {‘.‘,‘7‘,‘.‘,‘.‘,‘9‘,‘.‘,‘2‘,‘.‘,‘.‘}, {‘.‘,‘5‘,‘.‘,‘.‘,‘.‘,‘7‘,‘.‘,‘.‘,‘.‘}, {‘.‘,‘.‘,‘.‘,‘.‘,‘4‘,‘.‘,‘7‘,‘.‘,‘.‘}, {‘.‘,‘.‘,‘.‘,‘1‘,‘.‘,‘5‘,‘.‘,‘3‘,‘.‘}, {‘.‘,‘.‘,‘1‘,‘.‘,‘.‘,‘.‘,‘.‘,‘6‘,‘8‘}, {‘.‘,‘.‘,‘8‘,‘5‘,‘.‘,‘.‘,‘.‘,‘1‘,‘.‘}, {‘.‘,‘9‘,‘.‘,‘.‘,‘.‘,‘.‘,‘4‘,‘.‘,‘.‘} }; solveSudoku(board); long end = System.currentTimeMillis(); for(int i = 0 ; i < 9 ; i ++){ for(int j = 0 ; j < 9 ;j ++){ System.out.print(board[i][j]+" "); } System.out.println(); } System.out.println("耗时: "+ (double)(end-start)/1000+" s"); } }
LeetCode 37 Sudoku Solver(求解数独)
标签:.com private code tab font board system 判断 循环
原文地址:http://www.cnblogs.com/zpfbuaa/p/6534906.html