Pagini recente » Cod sursa (job #1524054) | Cod sursa (job #2645469) | Cod sursa (job #2355326) | Cod sursa (job #2303014) | Cod sursa (job #1657524)
#include <cstdio>
using namespace std;
int n;
int nr = 0;
int nrDame = 0;
int coloana[15];
bool coloanaFolosita[15];
void citire()
{
scanf("%d", &n);
}
bool isValid(int k, int l)
{
for(int i = 0; i < k; i++)
{
if(l >= coloana[i])
{
if(l - coloana[i] == k - i)
{
return false;
}
}
else
{
if(coloana[i] - l == k - i)
{
return false;
}
}
}
return true;
}
void afisare()
{
for(int i = 0; i < n; i++)
{
printf("%d ", coloana[i] + 1);
}
printf("\n");
}
void backtrack(int k)
{
if(k == n)
{
if(nr == 0)
{
afisare();
}
nr++;
}
else
{
for(int i = 0; i < n; i++)
{
if(coloanaFolosita[i] == false)
{
if(isValid(k, i))
{
coloana[k] = i;
coloanaFolosita[i] = true;
backtrack(k + 1);
coloana[k] = 0;
coloanaFolosita[i] = false;
}
}
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
citire();
backtrack(0);
printf("%d", nr);
return 0;
}