void generateBoard(vector<int>& board, vector<vector<string>>& solutions, int n){ if(board.size() == n){ if(isValidCross(board)){ vector<string> solution; for(int i=0; i<n; i++){ string line(n, '.'); line[board[i]] = 'Q'; solution.push_back(line); } solutions.push_back(solution); } return; } for(int i=0; i<n; i++){ bool exist = false; for(int j=0; j<board.size(); j++){ if(board[j] == i){ exist = true; break; } } if(!exist){ board.push_back(i); if(isValidCross(board)) generateBoard(board, solutions, n); board.pop_back(); } } }
void visitCross(int x, int y){ Picture[x][y] = '*'; int i; for (i = 0; i < 4; i++) if (isValidCross(x + dx[i], y + dy[i])) visitCross(x + dx[i], y + dy[i]); }