您的位置:首页 > 其它

Leetcode #37 Sudoku Solver

2015-08-31 08:59 267 查看
Write a program to solve a Sudoku puzzle by filling the empty cells.

Empty cells are indicated by the character
'.'
.

You may assume that there will be only one unique solution.



A sudoku puzzle...



...and its solution numbers marked in red.

Difficulty:Hard

</pre><pre name="code" class="cpp">class Solution {
public:
bool isValidSudoku(vector<vector<char> >& board,int i, int j) {
for(int k = 0;k<9;k++)
{
if(board[i][k]==board[i][j]&&k!=j)
return false;
if(board[k][j]==board[i][j]&&k!=i)
return false;
}
for(int x = (i/3)*3;x<=(i/3)*3+2;x++)
for(int y = (j/3)*3;y<=(j/3)*3+2;y++)
if(board[x][y]==board[i][j]&&x!=i&&y!=j)
return false;
return true;
}

bool sudo(vector<vector<char>>& board){
for(int i = 0;i<9;i++)
for(int j = 0;j<9;j++)
{
if(board[i][j]=='.')
{
for(int k = 1;k<=9;k++)
{
board[i][j] = '0'+k;
if(isValidSudoku(board,i,j)&&sudo(board))
return true;
board[i][j] = '.';
}
return false;
}
}
return true;
}

void solveSudoku(vector<vector<char>>& board) {
sudo(board);

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: