标签:style blog color io for div ar amp
就是回溯吧。。
class Solution { public: void solveSudoku(vector<vector<char> > &board) { huisu(0,0,board); } bool huisu(int row,int col ,vector<vector<char> > &board ){ if(board[row][col]!=‘.‘)//如果不是.的话,说明不需要赋值 { if(row==8&&col==8) {return true;}//如果到了最后一个点,返回true; else if(col==8)//如果到了第八列,则移上新的一行, { return huisu(row+1,0,board); } else { return huisu(row,col+1,board); } } else//如果是.的话,说明需要赋值。 { for(int i=1;i<=9;i++) { board[row][col]=‘0‘+i; if(isValidSudoku(board,col,row))//如果合格的话 { if(row==8&&col==8) {return true ;} else if(col==8) { if(huisu(row+1,0,board)) {return true;} else { board[row][col]=‘.‘;continue;} } else { if(huisu(row,col+1,board)) return true; else { board[row][col]=‘.‘;continue;} } } else { board[row][col]=‘.‘;} } } return false; } bool isValidSudoku(vector<vector<char> > &board, int x, int y) { int row, col; for (row = 0; row < 9; ++row) { if ((x != row) && (board[row][y] == board[x][y])) { return false; } } for (col = 0; col < 9; ++col) { if ((y != col) && (board[x][col] == board[x][y])) { return false; } } for (row = (x / 3) * 3; row < (x / 3 + 1) * 3; ++row) { for (col = (y / 3) * 3; col < (y / 3 + 1) * 3; ++col) { if ((x != row) && (y != col) && (board[row][col] == board[x][y])) { return false; } } } return true; } };
标签:style blog color io for div ar amp
原文地址:http://www.cnblogs.com/ian-fix/p/3871856.html