Pagini recente » Cod sursa (job #2283822) | Cod sursa (job #1268710) | Cod sursa (job #2577711) | Cod sursa (job #1789292) | Cod sursa (job #1714022)
#include <cstdio>
#include <bitset>
using namespace std;
FILE *fin=fopen ("damesah.in","r");
FILE *fout=fopen ("damesah.out","w");
int x[14],n,sol;
bitset <14> C;
bitset <30> DS;
bitset <30> DP;
void back (int pas){
if (pas>n){
sol++;
if (sol==1){
for (int i=1;i<=n;i++)
fprintf (fout,"%d ",x[i]);
fprintf (fout,"\n");
}
}
else
for (int i=1;i<=n;i++){
if (C[i]==0 && DS[i+pas]==0 && DP[i-pas+n]==0){
C[i]=1;
DS[i+pas]=1;
DP[i-pas+n]=1;
x[pas]=i;
back(pas+1);
C[i]=0;
DS[i+pas]=0;
DP[i-pas+n]=0;
}
}
}
int main()
{
fscanf (fin,"%d",&n);
back(1);
fprintf (fout,"%d",sol);
return 0;
}