Cod sursa(job #2471103)

Utilizator stormy_weatherelena cristina stormy_weather Data 10 octombrie 2019 11:57:23
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;

ifstream fin("damesah.in");
ofstream fout("damesah.out");

void generate_conf(int l, int n, vector<int> &cur_conf, vector<int> &columns, vector<int> &diag_1, vector<int> &diag_2, int &count) {
  if (l == n) {
    if (count == 0) {
      for (int i = 0; i < n; i++)
        fout << cur_conf[i] + 1 << " ";
      fout << "\n";
    }
    count++;
    return;
  }
  for (int i = 0; i < n; i++) {
    if (columns[i] == 0 && diag_1[l + i] == 0 && diag_2[l - i + n - 1] == 0) {
      cur_conf[l] = i;
      columns[i] = 1;
      diag_1[l + i] = 1;
      diag_2[l - i + n - 1] = 1;
      generate_conf(l + 1, n, cur_conf, columns, diag_1, diag_2, count);
      columns[i] = 0;
      diag_1[l + i] = 0;
      diag_2[l - i + n - 1] = 0;
    }
  }
  return;
}

int main() {
  int n; fin >> n;

  vector<int> cur_conf(n), columns(n, 0), diag_1(2  * n - 1, 0), diag_2(2 * n - 1, 0);
  int count = 0;

  generate_conf(0, n, cur_conf, columns, diag_1, diag_2, count);

  fout << count << "\n";
  return 0;
}