Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define ROWS 9
- #define COLS 9
- void ausgeben(int feld[][COLS]);
- int allowed(int feld[][COLS], int i, int j, int n);
- void * solve(int feld[][COLS]);
- int main(void)
- {
- int feld[ROWS][COLS] =
- {
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0}
- };
- ausgeben(feld);
- printf("------------------\n");
- solve(feld);
- return 0;
- }
- /*----------------------------------------------------------------------------*/
- void * solve(int feld[][COLS])
- {
- int i, j, n;
- for (i=0; i<ROWS; i++) // freies feld suchen
- {
- for (j=0; j<COLS; j++)
- {
- if (feld[i][j] == 0) // wenn freies feld gefunden
- {
- for (n=1; n<=10; n++) // moegliche Zahl fuer diese Feld suchen
- {
- if (allowed(feld, i, j, n)) // wenn Zahl gefunden
- {
- feld[i][j] = n; // ins feld eintragen
- if (solve(feld) != NULL) // funktion mit neuem feld aufrufen
- { // wenn mit neuem feld loesung gefunden
- ausgeben(feld);
- exit(0); // loesung gefunden
- }
- feld[i][j]=0; // sonst aenderung zuruecknehmen
- } // und mit naechstem n weitermachen
- }
- return NULL; // keine gueltige Zahl gefunden
- }
- }
- }
- }
- /*----------------------------------------------------------------------------*/
- void ausgeben(int feld[][COLS])
- {
- int i, j;
- for (i=0; i<ROWS; i++)
- {
- for (j=0; j<COLS; j++)
- {
- printf("%d ",feld[i][j]);
- }
- printf("\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment