Pagini recente » Borderou de evaluare (job #91812) | Borderou de evaluare (job #632678) | Monitorul de evaluare | Cod sursa (job #511482) | Cod sursa (job #3367407)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n, st[20], cnt;
bool ap[20];
bool dp[40], ds[40];
/**
n,1 -> 1
n - 1, 1 -> 2
n - 2, 1 -> 3
.
.
.
i, j -> n - i + j
col - lin + n
1,1 -> 1
1,2 -> 2
1,3 -> 3
.
.
.
1,n -> n
2,n -> n + 1
i, j -> i + j - 1
*/
void Back(int top)
{
if(top == n + 1)
{
cnt++;
if(cnt == 1)
{
for(int i = 1; i <= n; i++)
fout << st[i] << " ";
fout << '\n';
}
}
else for(int i = 1; i <= n; i++)
if(ap[i] == 0 && dp[n - top + i] == 0 && ds[i + top - 1] == 0)
{
st[top] = i;
ap[i] = 1;
dp[n - top + i] = 1;
ds[i + top - 1] = 1;
Back(top + 1);
ap[i] = 0;
dp[n - top + i] = 0;
ds[i + top - 1] = 0;
}
}
int main()
{
fin >> n;
Back(1);
fout << cnt << '\n';
return 0;
}