Pagini recente » Cod sursa (job #509103) | Cod sursa (job #1345155) | Cod sursa (job #291810) | Cod sursa (job #2706607) | Cod sursa (job #3313772)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX=13;
ifstream f("damesah.in");
ofstream g("damesah.out");
int N,x[NMAX+1],nrsol;
bool C[NMAX+1],dP[2*NMAX],dS[2*NMAX];
void afis()
{
for(int i=1;i<=N;i++)
g<<x[i]<<' ';
g<<'\n';
}
void bt(int k)
{
if(k<=N)
{
for(int i=1;i<=N;i++)
if(C[i]==0&&dP[N-k+i]==0&&dS[k+i-1]==0)
{
x[k]=i;
C[i]=dP[N-k+i]=dS[k+i-1]=1;
bt(k+1);
C[i]=dP[N-k+i]=dS[k+i-1]=0;
}
}
else
{if(nrsol==0)
afis();
nrsol++;
}
}
int main()
{
f>>N;
bt(1);
g<<nrsol;
f.close();
g.close();
return 0;
}