Pagini recente » Cod sursa (job #1773292) | Cod sursa (job #2262857) | Cod sursa (job #1213924) | Cod sursa (job #2154005) | Cod sursa (job #2147321)
#include <cstdio>
#include <cmath>
using namespace std;
int n,cnt,sol[15];
bool ok, used[15];
bool valid(int k)
{
for(int i=1; i<k; i++)
{
if(abs(sol[k]-sol[i])==abs(k-i)) return false;
}
return true;
}
void write()
{
if(!ok)
{
ok=1;
for(int i=1; i<=n; i++)
{
printf("%d ", sol[i]);
}
printf("\n");
}
cnt++;
}
void backtracking(int k)
{
if(k==n+1)
{
write();
}
else
{
for(sol[k]=1; sol[k]<=n; sol[k]++)
{
if(!used[sol[k]]&&valid(k))
{
used[sol[k]]=1;
backtracking(k+1);
used[sol[k]]=0;
}
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &n);
backtracking(1);
printf("%d\n", cnt);
return 0;
}