Guest User

Untitled

a guest
Sep 1st, 2010
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.78 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define ROWS 9
  5. #define COLS 9
  6.  
  7. void ausgeben(int feld[][COLS]);
  8. int allowed(int feld[][COLS], int i, int j, int n);
  9. void * solve(int feld[][COLS]);
  10.  
  11. int main(void)
  12. {
  13.     int feld[ROWS][COLS] =
  14.     {
  15.     {0,0,0,0,0,0,0,0,0},
  16.         {0,0,0,0,0,0,0,0,0},
  17.         {0,0,0,0,0,0,0,0,0},
  18.         {0,0,0,0,0,0,0,0,0},
  19.         {0,0,0,0,0,0,0,0,0},
  20.         {0,0,0,0,0,0,0,0,0},
  21.         {0,0,0,0,0,0,0,0,0},
  22.         {0,0,0,0,0,0,0,0,0},
  23.     {0,0,0,0,0,0,0,0,0}
  24.     };
  25.  
  26.  
  27.     ausgeben(feld);
  28.     printf("------------------\n");
  29.     solve(feld);
  30.  
  31.     return 0;
  32. }
  33.  
  34. /*----------------------------------------------------------------------------*/
  35. void * solve(int feld[][COLS])
  36. {
  37.     int i, j, n;
  38.  
  39.     for (i=0; i<ROWS; i++)                      // freies feld suchen
  40.     {
  41.     for (j=0; j<COLS; j++)
  42.         {
  43.         if (feld[i][j] == 0)                // wenn freies feld gefunden
  44.             {
  45.         for (n=1; n<=10; n++)           // moegliche Zahl fuer diese Feld suchen
  46.                 {
  47.             if (allowed(feld, i, j, n))         // wenn Zahl gefunden
  48.                     {
  49.             feld[i][j] = n;         // ins feld eintragen
  50.                 if (solve(feld) != NULL)    // funktion mit neuem feld aufrufen
  51.             {               // wenn mit neuem feld loesung gefunden
  52.                 ausgeben(feld);
  53.                 exit(0);            // loesung gefunden
  54.                         }
  55.             feld[i][j]=0;           // sonst aenderung zuruecknehmen
  56.             }                       // und mit naechstem n weitermachen
  57.                 }
  58.         return NULL;                // keine gueltige Zahl gefunden
  59.             }
  60.         }
  61.     }
  62. }
  63. /*----------------------------------------------------------------------------*/
  64.  
  65. void ausgeben(int feld[][COLS])
  66. {
  67.     int i, j;
  68.     for (i=0; i<ROWS; i++)
  69.     {
  70.             for (j=0; j<COLS; j++)
  71.         {
  72.         printf("%d ",feld[i][j]);
  73.         }
  74.         printf("\n");
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment