Guest User

Untitled

a guest
Apr 23rd, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. class Solution {
  4. public:
  5. array<int, 9> hchk, vchk, bchk;
  6. bool dfs(int idx, vector<vector<char>> &board){
  7. if(idx == 81) return true;
  8. int i = idx / 9, j = idx % 9, b = (i / 3) * 3 + (j / 3);
  9. if(board[i][j] != '.') return dfs(idx + 1, board);
  10. for(int k = 1 ; k <= 9 ; k++){
  11. int kk = 1 << k;
  12. if((hchk[i] & kk) || (vchk[j] & kk) || (bchk[b] & kk))continue;
  13. hchk[i] |= kk, vchk[j] |= kk, bchk[b] |= kk;
  14. board[i][j] = k + '0';
  15. if(dfs(idx + 1, board))return true;
  16. hchk[i] ^= kk, vchk[j] ^= kk, bchk[b] ^= kk;
  17. }
  18. return false;
  19. }
  20. void solveSudoku(vector<vector<char>>& board) {
  21. for(int i = 0 ; i < 9 ; i++){
  22. for(int j = 0 ; j < 9 ; j++){
  23. if(board[i][j] != '.'){
  24. int c = 1 << (board[i][j] - '0');
  25. hchk[i] |= c, vchk[j] |= c, bchk[(i / 3) * 3 + (j / 3)] |= c;
  26. }
  27. }
  28. }
  29. dfs(0, board);
  30. }
  31. };
  32. int main(){
  33. return 0;
  34. }
Add Comment
Please, Sign In to add comment