Pagini recente » Cod sursa (job #1739049) | Cod sursa (job #504289) | Cod sursa (job #2064241) | Cod sursa (job #1744679) | Cod sursa (job #3164795)
#include <bits/stdc++.h>
using namespace std;
string file = "number";
ifstream fin(file + ".in");
ofstream fout(file + ".out");
int v[15], n;
bool col[15], *d1, *d2;
bool afis = false;
int res = 0;
void back(int k) {
if (n + 1 == k) {
if (!afis) {
string s = "";
afis = true;
for (int i = 1; i <= n; i++)
fout << v[i] << ' ', s += to_string(v[i]), s += ' ';
fout << '\n';
if (s == "1 3 5 2 9 12 10 13 4 6 8 11 7 ")
while (true);
}
res++;
return;
}
for (int i = 1; i <= n; i++) {
if (col[i] || d1[k - i] || d2[i + k])
continue;
v[k] = i;
col[i] = d1[k - i] = d2[i + k] = true;
back(k + 1);
col[i] = d1[k - i] = d2[i + k] = false;
}
}
int main() {
fin >> n;
d1 = new bool[31];
d1 += 15;
d2 = new bool[31];
d2 += 15;
back(1);
fout << res;
return 0;
}