Pagini recente » Cod sursa (job #153040) | Cod sursa (job #2144956) | Cod sursa (job #2956284) | Cod sursa (job #1998461) | Cod sursa (job #1097777)
#include<stdio.h>
#include<math.h>
int k, sol[13];
bool isValid(int k)
{
for(int i = 1; i < k; ++i)
if((sol[i] == sol[k]) || (k - i == abs(sol[k] - sol[i])))
return false;
return true;
}
void print(int n)
{
for(int i = 1; i <= n; ++i)
printf("%d ", sol[i]);
}
int main()
{
int N, nr_solutii = 0;
bool valid, first = true;;
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &N);
k = 1;
sol[k] = 0;
while(k > 0)
{
valid = false;
while((sol[k] < N) && (!valid))
{
sol[k]++;
valid = isValid(k);
}
if(!valid)
k--;
else
{
if(k == N)
{
if(first)
{
print(N);
first = false;
}
nr_solutii++;
}
else
{
k++;
sol[k] = 0;
}
}
}
printf("\n");
printf("%d\n", nr_solutii);
return 0;
}