initial CVS commit
commit
d8901fd630
@ -0,0 +1,56 @@
|
|||||||
|
/* Lösung des Springerproblems
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define GROESSE 6
|
||||||
|
|
||||||
|
int schachbrett[GROESSE][GROESSE];
|
||||||
|
long int zurueck;
|
||||||
|
|
||||||
|
int springe(int x, int y, int s) {
|
||||||
|
schachbrett[x][y] = s;
|
||||||
|
|
||||||
|
/* printf ("Zug %2d: %d %d\n",s,x,y); */
|
||||||
|
|
||||||
|
if (s==GROESSE*GROESSE) {
|
||||||
|
printf("yeah! %d Züge zurückgenommen!\n", zurueck);
|
||||||
|
zeigebrett();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gueltig(x-1,y+2)) springe(x-1,y+2,s+1);
|
||||||
|
if (gueltig(x+1,y+2)) springe(x+1,y+2,s+1);
|
||||||
|
if (gueltig(x+2,y+1)) springe(x+2,y+1,s+1);
|
||||||
|
if (gueltig(x+2,y-1)) springe(x+2,y-1,s+1);
|
||||||
|
if (gueltig(x+1,y-2)) springe(x+1,y-2,s+1);
|
||||||
|
if (gueltig(x-1,y-2)) springe(x-1,y-2,s+1);
|
||||||
|
if (gueltig(x-2,y-1)) springe(x-2,y-1,s+1);
|
||||||
|
if (gueltig(x-2,y+1)) springe(x-2,y+1,s+1);
|
||||||
|
|
||||||
|
/* printf("oje: Nehme Zug zurück!\n");
|
||||||
|
zeigebrett();
|
||||||
|
*/
|
||||||
|
zurueck++;
|
||||||
|
schachbrett[x][y] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int gueltig(int x, int y) {
|
||||||
|
if ((x>=0) && (x<GROESSE) && (y>=0) && (y<GROESSE))
|
||||||
|
return (schachbrett[x][y]==0);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int zeigebrett() {
|
||||||
|
int y,x;
|
||||||
|
for (y=0;y<GROESSE;y++) {
|
||||||
|
for (x=0;x<GROESSE;x++) {
|
||||||
|
printf("%2d ",schachbrett[x][y]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main () {
|
||||||
|
springe(0,0,1);
|
||||||
|
}
|
Reference in New Issue