Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. const int size = 8;
  5.  
  6. int vert[size], hor[size], diag1[size * 2 - 1], diag2[size * 2 - 1];
  7.  
  8.  
  9. void setQueen(int x, int y)
  10. {
  11. if (vert[x] == 0 && hor[y] == 0 && diag1[x + y] == 0 && diag2[x - y + 7] == 0)
  12. {
  13. vert[x] = hor[y] = diag1[x + y] = diag2[x - y + 7] = 1;
  14. }
  15. }
  16.  
  17. void resetQueen(int x, int y)
  18. {
  19. vert[x] = hor[y] = diag1[x + y] = diag2[x - y + 7] = 0;
  20. }
  21.  
  22. int checkQueen(int x, int y)
  23. {
  24. return vert[x] || hor[y] || diag1[x + y] || diag2[x - y + 7];
  25. }
  26.  
  27. int queen(std::vector<std::pair<int, int>>& queens, int n, int curr)
  28. {
  29. if (!curr)
  30. {
  31. return 1;
  32. }
  33. for (int i = 0; i < n; i++)
  34. for (int j = 0; j < n; j++)
  35. {
  36. if (!checkQueen(i, j))
  37. {
  38. queens.push_back(std::make_pair(i, j));
  39. setQueen(i, j);
  40. if(queen(queens, n, curr - 1)) return 1;
  41. resetQueen(i, j);
  42. queens.pop_back();
  43. }
  44. }
  45. return 0;
  46. }
  47.  
  48. int main()
  49. {
  50. std::vector<std::pair<int, int>> queens;
  51. queen(queens, 8, 8);
  52. return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement