class Solution {
public:
bool solveSudoku1(vector<vector<char> > &board) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
const int gridSize = 9;
for (int i = 0; i < gridSize; ++i)
{
for (int j = 0; j < gridSize; ++j)
{
if (board[i][j] == '.')
{
for (int k = 1; k <= gridSize; ++k)
{
board[i][j] = k + '0';
if (isValid(board, i, j) && solveSudoku1(board))
{
return true;
}
board[i][j] = '.';
}
return false;
}
}
}
return true;
}
bool isValid(vector<vector<char> > &board, int i, int j)
{
bool ans = true;
char tmp = board[i][j];
board[i][j] = 'Z';
const int gridSize = 9;
int begX = i / 3 * 3;
int begY = j / 3 * 3;
for (int k = 0; k < gridSize; ++k)
{
int gridX = k / 3;
int gridY = k % 3;
if (board[i][k] == tmp || board[k][j] == tmp || board[begX + gridX][begY + gridY] == tmp)
{
ans = false;
break;
}
}
board[i][j] = tmp;
return ans;
}
};
参考: http://blog.csdn.net/zxzxy1988/article/details/8586289