#include #define NMAX 8 int damier[NMAX][NMAX]; /* par convention une case vide vaut ze'ro */ void imprimerJeu() { int i,j; for(i=0 ; i < NMAX ; i++) { for (j=0 ; j < NMAX ; j++) { printf("%3d",damier[i][j]); } printf("\n"); } printf("\n"); } /* tableau des de'placements du cavalier */ int di[]={1,2, 2, 1,-1,-2,-2,-1}; int dj[]={2,1,-1,-2,-2,-1, 1, 2}; int valide(int i,int j) { return((i >= 0) && (i < NMAX) && (j >= 0) && (j < NMAX)); } void essaie(int n,int i,int j) { int k; int ii,jj; damier[i][j] = n; if (n > 1) { for (k = 0 ; k < 8 ; k++) { ii = i + di[k]; jj = j + dj[k]; if (valide(ii,jj) && damier[ii][jj] == 0) essaie(n-1,ii,jj); } } else { imprimerJeu(); } damier[i][j] = 0; } void main(void) { printf("Solutions du problème du cavalier, %d X %d\n",NMAX,NMAX); essaie(NMAX*NMAX,0,0); }