Pagini recente » Cod sursa (job #838938) | Cod sursa (job #633341) | Cod sursa (job #1582359) | Cod sursa (job #2606413) | Cod sursa (job #1116559)
#include <fstream>
const short NMAX=13;
int main(){
std::ifstream fin("damesah.in");
std::ofstream fout("damesah.out");
short n; fin>>n;
unsigned modalitati=0;
bool col[NMAX],prd[2*NMAX],secd[2*NMAX];
short k[NMAX];
for(short i=0;i<NMAX;++i){ col[i]=false; k[i]=-1; }
for(short i=0;i<2*NMAX;++i){ prd[i]=false; secd[i]=false; }
short i=0;
while(i>-1){
bool cont=true;
if(k[i]==n-1){
k[i]=-1;
col[n-1]=false;
prd[i+1]=false;
secd[i+n-1]=false;
cont=false;
--i;
}
else{
if(k[i]!=-1){ col[k[i]]=false; secd[i+k[i]]=false; prd[n+i-k[i]]=false; }
short j=-1;
for(short j2=k[i]+1;j2<n;++j2)
if(!(col[j2]||prd[n+i-j2]||secd[i+j2])){ j=j2; break; }
if(j==-1){ k[i]=-1; --i; cont=false; }
else{ k[i]=j; col[j]=true; secd[i+j]=true; prd[n+i-j]=true; }
}
if(cont){
if(i==n-1){
if(modalitati==0){
for(short i=0;i<n;++i) fout<<k[i]+1<<' ';
fout<<'\n';
}
++modalitati;
}
else ++i;
}
}
fout<<modalitati<<'\n';
}