Pagini recente » Cod sursa (job #676803) | Cod sursa (job #2974648) | Cod sursa (job #2248238) | Cod sursa (job #1667409) | Cod sursa (job #2420419)
#include <iostream>
#include <fstream>
std::ifstream fin("damesah.in");
std::ofstream fout("damesah.out");
bool d1[20];
bool d2[40];
bool c[20];
int t[20];
int v[20];
int n;
long long found;
int pos;
void write()
{
for(int i=0;i<n;i++)
fout<<v[i]+1<<" ";
fout<<"\n";
}
int main()
{
fin>>n;
t[0]=1;
d1[0]=true;
d2[n]=true;
c[0]=true;
pos++;
while(true)
{
bool ok=false;
for(int i=t[pos];i<n;i++)
{
t[pos]=i+1;
if(!d1[i+pos]&&!d2[i-pos+n] && !c[i])
{
d1[i+pos]=true;
d2[i-pos+n]=true;
c[i]=true;
v[pos]=i;
pos++;
ok=true;
break;
}
}
if(!ok)
{
if(pos==0) break;
t[pos]=0;
v[pos]=0;
pos--;
int i = v[pos];
d1[i+pos]=false;
d2[i-pos+n]=false;
c[i]=false;
}
if(ok&&pos==n)
{
found++;
if(found==1)
write();
}
}
fout<<found;
}