(n-Queen) Почему я не могу ничего выводить - PullRequest
0 голосов
/ 07 марта 2020

Почему я не могу вывести что-то, чему научился у geeksforgeeks, но сначала я хочу напечатать 2 4 1 3.

Я использую nq, чтобы пометить позиции ферзей, безопасно, чтобы проверить, будет ли королева другие могут печатать для печати правильных комбинаций в следующем порядке.

Ввод

4

Ожидаемый вывод

2 4 1 3

3 1 4 2

#include<iostream>

using namespace std;
int print(int b[12][12], int n) {
  for (int j = 0; j < n; j++)
    for (int i = 0; i < n; i++)
      if (b[i][j] == 1)
        cout << i + 1 << " ";
  cout << endl;
}

bool issafe(int b[12][12], int row, int col, int n) {
  for (int j = col; j > 0; j--)
    if (b[row][j - 1] == 1)
      return false;
  for (int i = row, j = col; i > 0 && j > 0; i--, j--)
    if (b[i - 1][j - 1] == 1)
      return false;
  for (int i = row, j = col; i < n - 1 && j > 0; i++, j--)
    if (b[i + 1][j - 1] == 1)
      return false;
}

bool nq(int b[12][12], int col, int n) {
  if (col == n) {
    print(b, n);
    return true;
  }
  for (int i = 0; i < n; i++) {
    if (issafe(b, i, col, n)) {
      b[i][col] = 1;
      nq(b, col + 1, n);

      b[i][col] = 0;
    }
  }
}

int main() {
  int n;
  cin >> n;
  int b[12][12];
  nq(b, 0, n);
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...