#include void cancel(int tab[8][8],int m,int n) { int i,j; tab[m][n]=0; if(m!=8) { for(i=m;i<8;i++) { if(tab[i][n]==-(m+1)) tab[i][n]=0; } i=m; j=n; while((i!=8)&&(j!=0)) { i++; j--; if(tab[i][j]==-(m+1)) tab[i][j]=0; } i=m; j=n; while((i!=8)&&(j!=8)) { i++; j++; if(tab[i][j]==-(m+1)) tab[i][j]=0; } } } void lock(int tab[8][8],int m,int n) { int i,j; tab[m][n]=8; if(m!=8) { for(i=m;i<8;i++) { if(tab[i][n]==0) tab[i][n]=-(m+1); } i=m; j=n; while((i!=8)&&(j!=0)) { i++; j--; if(tab[i][j]==0) tab[i][j]=-(m+1); } i=m; j=n; while((i!=8)&&(j!=8)) { i++; j++; if(tab[i][j]==0) tab[i][j]=-(m+1); } } } void fill(int tab[8][8],int n, int soluce,int end) { int i,j,k=-1; char c; //printf("SOLUCE_deb %d\n", *soluce); if((end)!=2) { if(tab[0][7]==8) { scanf("&c",c); printf("s%d",tab[0][7]); (end)++; } for(i=0;i<8;i++) { if(tab[n][i]==8) { k=i; cancel(tab,n,i); break; } } /*if(i==7) i=6;*/ for(j=k+1;j<8;j++) { if(tab[n][j]==0) { lock(tab,n,j); k=-2; break; } } if(k!=-2) { //printf("back\n"); fill(tab,n-1,soluce,end); } if((n!=7)&&(k==-2)) fill(tab,n+1,soluce,end); if((n==7)&&(k==-2)) { //printf("soluce: %d,end: %d\n",*soluce,*end); //printf("kjo"); //*printf("SOLUCE_deb %d\n", *soluce); soluce++; for(i=0;i<8;i++) { for(j=0;j<8;j++) printf("%02d ",tab[i][j]); printf("k=%d",k); printf("\n"); } //scanf("%c",&c); printf("SOLUCE_fin %d\nend: %d", soluce,end); printf("\n\n"); printf("soluce: %d,end: %d\n",soluce,end); //scanf("%c",&c); fill(tab,n,soluce,end); } //if(*soluce==1)//||(*soluce==41)) // scanf("%c",&c); if((tab[0][7]==0)&&((end)==1)) { //printf("kja"); //scanf("%c",&c); (end)++; } } } void init(int tab[8][8]) { int i,j; //printf("done"); for(i=0;i<8;i++) { for(j=0;j<8;j++) tab[i][j]=0; } } int my_8r1() { int tab[8][8]; int sol=0, end=0; init(tab); fill(tab,0,sol,end); printf("i=%d",sol); return sol; } int main() { int i; i=my_8r1(); printf("%d",i); }