Pagini recente » Cod sursa (job #1133440) | Cod sursa (job #2265598) | Cod sursa (job #475964) | Cod sursa (job #2709898) | Cod sursa (job #1743498)
#include <cstdio>
#include <vector>
using namespace std;
int nr = 0;
int n;
int sol[20];
int vizRow[20];
int vizDiag1[50];
int vizDiag2[50];
void citire()
{
scanf("%d", &n);
}
void afisare()
{
for(int i = 0; i < n; i++)
{
printf("%d ", sol[i] + 1);
}
printf("\n");
}
void backtracking(int k)
{
if(k == n)
{
if(nr == 0)
{
afisare();
}
nr++;
}
else
{
for(int i = 0; i < n; i++)
{
if(vizRow[i] == false && vizDiag1[k + i] == false && vizDiag2[n - 1 - k + i] == false)
{
sol[k] = i;
vizRow[i] = true;
vizDiag1[k + i] = true;
vizDiag2[n - 1 - k + i] = true;
backtracking(k + 1);
vizRow[i] = false;
vizDiag1[k + i] = false;
vizDiag2[n - 1 - k + i] = false;
sol[k] = 0;
}
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
citire();
backtracking(0);
printf("%d", nr);
return 0;
}