Pagini recente » Cod sursa (job #3159242) | Cod sursa (job #1399466) | Cod sursa (job #1926715) | Cod sursa (job #3187935) | Cod sursa (job #1759773)
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n,j,k,ok,st[15],top,v[15],v1[15],v2[15],ct,ip,V1[15],V2[15];
void Afisare()
{int i;
for(i=1;i<=n;i++)
fout<<st[i]<<" ";
}
void Back(int top)
{int i;
if(top==n+1){if(ok==0){Afisare();ct++;ok=1;}
else ct++;
}
else for(i=1;i<=n;i++)
{ip=n-i+1;
if(i>=top){if(v[i]==0&&v1[i-top]==0)
{if(ip>=top&&V1[ip+top]==0)
{st[top]=i;//fout<<i<<"("<<ip-top<<")"<<"("<<i-top<<")"<<"* ";
v[i]=1;
v1[i-top]=1;
V1[ip+top]=1;
Back(top+1);
v[i]=0;
v1[i-top]=0;
V1[ip+top]=0;
// fout<<"\n";
}
else if(ip<top&&V2[top+ip]==0)
{st[top]=i;//fout<<i<<"("<<ip-top<<")"<<"("<<i-top<<")"<<" ";
v[i]=1;
v1[i-top]=1;
V2[top+ip]=1;
Back(top+1);
v[i]=0;
v1[i-top]=0;
V2[top+ip]=0;
// fout<<"\n";
}
}
}
else {if(v[i]==0&&v2[top-i]==0)
{if(ip>=top&&V1[ip+top]==0)
{st[top]=i;//fout<<i<<"("<<ip-top<<")"<<"("<<i-top<<")"<<"* ";
v[i]=1;
v2[top-i]=1;
V1[ip+top]=1;
Back(top+1);
v[i]=0;
v2[top-i]=0;
V1[ip+top]=0;
// fout<<"\n";
}
else if(ip<top&&V2[top+ip]==0)
{st[top]=i;//fout<<i<<"("<<ip-top<<")"<<"("<<i-top<<")"<<" ";
v[i]=1;
v2[top-i]=1;
V2[top+ip]=1;
Back(top+1);
v[i]=0;
v2[top-i]=0;
V2[top+ip]=0;
// fout<<"\n";
}
}
}
}
}
int main()
{fin>>n;
Back(1);
fout<<"\n"<<ct;
}