bool is_checked(const int counter, int board[]) { int row_1, row_2; for (int col_1=0; col_1<counter; col_1++){ row_1 = board[col_1]; for (int col_2=col_1+1; col_2<counter; col_2++) { row_2 = board[col_2]; if (threatens(row_1, row_2, col_1, col_2)) return false; } } return true; }
// the i-th queen is in the i-th row // we only check rows up to end_idx // so that the same function can be used for backtracking and checking the final solution static bool good(const std::vector<int> &pos, int end_idx) { for (int row_a = 0; row_a < end_idx; row_a++) { for (int row_b = row_a + 1; row_b < end_idx; row_b++) { int col_a = pos[row_a]; int col_b = pos[row_b]; if (threatens(row_a, col_a, row_b, col_b)) { return false; } } } return true; }