Pagini recente » Cod sursa (job #48472) | Cod sursa (job #3198047) | Cod sursa (job #2418472) | Cod sursa (job #2519264) | Cod sursa (job #2974258)
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
struct coords{short int i,j;};
int n,v[21],k,cantulics;
bool fr[21][21],firstsaid=false;
void paulizare(int i,int j){
//fout<<"Hi Paul"<<'\n';
for(int c=1;c<=n;c++)
{
fr[c][j]=1;
fr[i][c]=1;
}
int c1=i,c2=j,c1c=c1,c2c=c2;
while(c2>0 || c1>0)
{
fr[c1][c2]=1;
c2--;
c1--;
}
c1=c1c;
c2=c2c;
while(c2<=n || c1<=n)
{
fr[c1][c2]=1;
c2++;
c1++;
}
c1=c1c; c2=c2c;
while(c2<=n || c1>0)
{
fr[c1][c2]=1;
c2++;
c1--;
}
c1=c1c;
c2=c2c;
while(c2>0 || c1<=n)
{
fr[c1][c2]=1;
c2--;
c1++;
}
}
void depaulizare(int i,int j){
//fout<<"RIP Paul"<<'\n';
for(int c=1;c<=n;c++)
{
fr[c][j]=0;
fr[i][c]=0;
}
int c1=i,c2=j,c1c=c1,c2c=c2;
while(c2>0 || c1>0)
{
fr[c1][c2]=0;
c2--;
c1--;
}
c1=c1c;
c2=c2c;
while(c2<=n || c1<=n)
{
fr[c1][c2]=0;
c2++;
c1++;
}
c1=c1c; c2=c2c;
while(c2<=n || c1>0)
{
fr[c1][c2]=0;
c2++;
c1--;
}
c1=c1c;
c2=c2c;
while(c2>0 || c1<=n)
{
fr[c1][c2]=0;
c2--;
c1++;
}
}
void bkt(int i){
int nr=1;
if(i>n)
return;
while(nr<=n){
if(fr[i][nr]==0)
{
v[i]=nr;
paulizare(i,nr);
//fout<<'\n';
if(i==n)
{
if(!firstsaid)
{
firstsaid=true;
for(int c=1;c<=n;c++)
fout<<v[c]<<" ";
fout<<'\n';
}
cantulics++;
}
/*for(int c=1;c<=i;c++)
fout<<v[c]<<" ";
fout<<'\n';*/
/*for(int c=1;c<=n;c++)
{
for(int c2=1;c2<=n;c2++)
fout<<fr[c][c2]<<" ";
fout<<'\n';
}*/
bkt(i+1);
depaulizare(i,nr);
for(int c=1;c<=i-1;c++)
paulizare(c,v[c]);
}
nr++;
}
}
int main()
{
fin>>n;
bkt(1);
fout<<cantulics;
return 0;
}