diff --git a/Program's_Contributed_By_Contributors/C++/NQueens.cpp b/Program's_Contributed_By_Contributors/C++/NQueens.cpp new file mode 100644 index 0000000000..99a741054c --- /dev/null +++ b/Program's_Contributed_By_Contributors/C++/NQueens.cpp @@ -0,0 +1,70 @@ +#include +using namespace std; + +class Solution +{ + bool check(vector curr, int curRow, int curCol) + { + + for (int i = 0; i < curr.size(); i++) + { + if (curr[curRow][i] == 'Q') + return false; + if (curr[i][curCol] == 'Q') + return false; + } + + int i = curRow, j = curCol; + while (i >= 0 && j >= 0) + { + if (curr[i][j] == 'Q') + return false; + i--; + j--; + } + i = curRow; + j = curCol; + while (i >= 0 && j < curr.size()) + { + if (curr[i][j] == 'Q') + return false; + i--; + j++; + } + return true; + } + void helper(vector curr, vector> &ans, int curRow) + { + if (curRow >= curr.size()) + { + ans.push_back(curr); + return; + } + + for (int i = 0; i < curr.size(); i++) + { + if (check(curr, curRow, i)) + { + curr[curRow][i] = 'Q'; + helper(curr, ans, curRow + 1); + curr[curRow][i] = '.'; + } + } + } + +public: + vector> solveNQueens(int n) + { + vector> ans; + + string str = ""; + for (int i = 0; i < n; i++) + { + str += '.'; + } + + vector temp(n, str); + helper(temp, ans, 0); + return ans; + } +}; \ No newline at end of file