Sudoku Solver

Write a program to solve a Sudoku puzzle by filling the empty cells.

Empty cells are indicated by the character '.'.

 1 public class Solution {
 2     public void solveSudoku(char[][] board) {
 3         solve(board);
 4     }
 5     public boolean solve(char[][]board){
 6         for(int i=0;i<9;i++){
 7             for(int j=0;j<9;j++){
 8                 if(board[i][j]=='.'){
 9                     for(int k=1;k<=9;k++){
10                         board[i][j]=(char) (k+'0');
11                         if(isValid(board,i,j) && solve(board))
12                             return true;
13                         else {
14                                 board[i][j] = '.';
15                         }
16                     }
17                     return false;
18                 }
19             }
20         }
21         return true;
22     }
23     public boolean isValid(char[][]board,int x,int y){
24         for(int i=0;i<board.length;i++){
25             if(x!=i && board[x][y]==board[i][y]) return false;
26         }
27         for(int i=0;i<board.length;i++){
28             if(y!=i && board[x][y]==board[x][i]) return false;
29         }
30         for(int i=3*(x/3);i<3*(x/3+1);i++){
31             for(int j=3*(y/3);j<3*(y/3+1);j++){
32                 if(x!=i &&j!=y &&board[i][j]==board[x][y]) return false;
33             }
34         }
35         return true;
36     }
37     }
View Code

 

posted @ 2014-02-06 14:11  krunning  阅读(195)  评论(0编辑  收藏  举报