Pagini recente » Cod sursa (job #1671698) | Cod sursa (job #1101004) | Cod sursa (job #3309347)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n, sol = 0, a[14];
bool check(int pas)
{
int sfq[2 * n + 1], dfq[2 * n + 1], vfq[n + 1];
memset(sfq, 0, sizeof(sfq));
memset(dfq, 0, sizeof(dfq));
memset(vfq, 0, sizeof(vfq));
for(int i = 1; i <= pas; i++)
{
dfq[(i - a[i] + n)]++;
sfq[(i + a[i])]++;
vfq[a[i]]++;
}
for(int i = 1; i < 2 * n + 1; i++)
{
if(dfq[i] > 1)return false;
if(sfq[i] > 1)return false;
}
for(int i = 1; i <= n; i++)
{
if(vfq[i] > 1)return false;
}
return true;
}
void bkt(int pas)
{
if (pas == n + 1)
{
sol++;
if(sol == 1)
{
for(int i = 1; i <= n; i++)
{
fout << a[i] << " ";
}
fout << "\n";
}
return;
}
else
{
for (int i = 1; i <= n; i++)
{
a[pas] = i;
if (check(pas))
{
cout << a[pas] << " ";
bkt(pas + 1);
}
}
}
}
int main()
{
fin >> n;
bkt(1);
fout << sol;
return 0;
}