Pagini recente » Cod sursa (job #309079) | Statistici Ana Ban (nobodyban) | Cod sursa (job #1537768) | Cod sursa (job #3204745) | Cod sursa (job #2672353)
#include <cstdio>
#include <cstdlib>
using namespace std;
FILE *f=fopen("damesah.in","r");
FILE *g=fopen("damesah.out","w");
int n, x[14],nr_sol;
bool Ap[14], diagonala_stanga[28], diagonala_dreapta[28];
bool valid(int k, int poz)
{
return !Ap[poz] && !diagonala_dreapta[n - k + poz] && !diagonala_stanga[k + poz - 1];
}
void afis(int k)
{
for(int i = 1; i <= k; i++)
fprintf(g,"%d ",x[i]);
fprintf(g,"\n");
}
void backt(int k)
{
if(k <= n)
{
for(int i = 1; i <= n; i++)
if(valid(k, i))
{
x[k]=i;
Ap[i]=diagonala_dreapta[n - k + i]=diagonala_stanga[k + i - 1]=1;
backt(k+1);
Ap[i]=diagonala_dreapta[n - k + i]=diagonala_stanga[k + i - 1]=0;
}
}
else
{
if(!nr_sol)
afis(n);
nr_sol++;
}
}
int main()
{
fscanf(f,"%d",&n);
backt(1);
fprintf(g,"%d",nr_sol);
return 0;
}