Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- const int size = 8;
- int vert[size], hor[size], diag1[size * 2 - 1], diag2[size * 2 - 1];
- void setQueen(int x, int y)
- {
- if (vert[x] == 0 && hor[y] == 0 && diag1[x + y] == 0 && diag2[x - y + 7] == 0)
- {
- vert[x] = hor[y] = diag1[x + y] = diag2[x - y + 7] = 1;
- }
- }
- void resetQueen(int x, int y)
- {
- vert[x] = hor[y] = diag1[x + y] = diag2[x - y + 7] = 0;
- }
- int checkQueen(int x, int y)
- {
- return vert[x] || hor[y] || diag1[x + y] || diag2[x - y + 7];
- }
- int queen(std::vector<std::pair<int, int>>& queens, int n, int curr)
- {
- if (!curr)
- {
- return 1;
- }
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- {
- if (!checkQueen(i, j))
- {
- queens.push_back(std::make_pair(i, j));
- setQueen(i, j);
- if(queen(queens, n, curr - 1)) return 1;
- resetQueen(i, j);
- queens.pop_back();
- }
- }
- return 0;
- }
- int main()
- {
- std::vector<std::pair<int, int>> queens;
- queen(queens, 8, 8);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement