Cod:
void back()
{
FILE *g=fopen("checker.out","w"),
*f=fopen("checker.in","r");
unsigned long m=0;
int k=1,as,gasite=0,aux,n,limita;
fscanf(f,"%d",&n);
fclose(f);
if(n>6) aux=(n+1)/2;
else aux=n;
st[k]=val1;
while(k>val1)
{
limita=n;
if(k==1 || (k==2 && st[1]==7)) limita=aux;
do{
if(st[k]<limita) {st[k]++;as=1;}
else as=val1;
}while((as) && (diag[st[k]-k+n]!=val1 || diag2[k+st[k]]!=val1 || coloana[st[k]]!=val1));
if(as) {
diag[st[k]-k+n]=diag2[st[k]+k]=coloana[st[k]]=1;
if(k==n) {
// noteaza();
if((st[1]!=aux && n>6) || (st[1]==aux && n%2==val1 && n>6) || (n==13)) m+=2;
else m++;
if(gasite<3)
{ for(int j=1;j<=n;j++) {fprintf(g,"%d",st[j]);if(j!=n) fprintf(g," ");}
fprintf(g,"\n");gasite++;
}
coloana[st[k]]=diag[st[k]-k+n]=diag2[st[k]+k]=val1;
}
else {k++;st[k]=val1;}
}
else {k--;coloana[st[k]]=diag[st[k]-k+n]=diag2[st[k]+k]=val1;}
}
fprintf(g,"%ld\n",m);
fclose(g);
}
Editat de moderator: Invatati sa puneti "[code]" inaintea unui fragment de cod