charognard a écrit :MON PROBLEME EST SUR LE COMPILATEUR SDCC PAS SUR LE 850V EN C !!!
c'est compris ou il faut que je fasse un dessin

Ben, ta première question n'était pas très claire. En plus, je n'avais pas compris qu'il s'agissait d'un code de Xerxes et non du tien.
L'occasion faisant le larron, j'ai pondu hier entre 22h et 1h ceci :
10 char acGri[64], acPos[64], acSol[9]; Grille, Positions, Solution
12 int iNbr=0; Nombre (de solutions)
50 void Recherche(char cN,char *pcD) Niveau (rangée), Début
51 { char cCol,cPos,cFin=cN*8+8,cAbs,*pcCur=pcD; Colonne, Position, Fin, Abscisse, Curseur
52 if (cN==8) Clause d'arrêt de la récursion
54 { printf("%4d: %s\n",++iNbr,acSol);
55 return; }
60 for(cCol=cN*8;cCol<cFin;++cCol) if (acGri[cCol]) /*libre=1*/
61 { On décrit une rangée case par case en sautant les cases marquées
62 cAbs=cCol%8;
63 acSol[cN]='1'+cAbs;
70 for(cPos=cCol+8;cPos<64;cPos+=8) Marquage de la colonne sur les rangées suivantes
71 if (acGri[cPos]) /*lib=1*/
72 { acGri[cPos]=0; *(pcCur++)=cPos; } /*occupae=0*/ On note au passage le n° de la case marquée dans acPos
75 for(cPos=cCol+7;cPos<64 && (cPos%8)<cAbs;cPos+=7) Diagonale indirecte avec arrêt au bord de l'échiquier
76 if (acGri[cPos]) /*lib=1*/
77 { acGri[cPos]=0; *(pcCur++)=cPos; } /*occupae=0*/
80 for(cPos=cCol+9;cPos<64 && (cPos%8)>cAbs;cPos+=9) Diagonale directe avec arrêt au bord de l'échiquier
81 if (acGri[cPos]) /*lib=1*/
82 { acGri[cPos]=0; *(pcCur++)=cPos; } /*occupae=0*/
88 Recherche(cN+1,pcCur);
91 while (pcD<pcCur)
92 acGri[*(--pcCur)]=1; /*libre aa nouveau*/ Libération des cases marquées à l'étape courante
95 } /*colonnes*/
99 } /*recherche*/
100 int main()
101 { char *pc;
110 for(pc=acGri;pc<acGri+64;++pc) *pc=1; /*libre*/ Initialisation de la grille (échiquier)
112 acSol[8]=0; Zéro terminal pour la chaîne-solution
130 Recherche(0,acPos); Lancement de la recherche sur la première rangée
190 printf("Fin sans erreur.");
199 return 0; }
Voilà un reflet du contenu de mon 850S (avec suppléments de commentaires en vert). Au passage, j'illustre ma façon de remplacer les accents qu'il me semble utile de faire figurer quelque soit le matériel utilisé.
Mon programme sort 92 solutions en 51,5 secondes. La dernière est celle que donne Xerxes : 84136275. Il y a peut-être des optimisations à faire que je ne connais pas...
Programmeur abscons.