Prosta rekurencja w C

0

1.Mógłby ktoś poprawić program Problem konika szachowego aby wyszukiwał tylko jedno rozwiązanie a nie wszystkie możliwości?

 
#include<stdio.h>
int szachownica[12][12];
    int xk,yk,nr,rozwiazanie;
    void przygotuj_pola()
    {
      int i,j;
      for (i=0;i<12;i++)
       for (j=0;j<12;j++)
        szachownica[i][j]=1;
      for (i=2;i<10;i++)
       for (j=2;j<10;j++)
        szachownica[i][j]=0;
    }
    int umiesc_konika(int x,int y,int numer)
    {
      int i,j,k,ch;
      if (szachownica[x][y]==0)
      {
        szachownica[x][y]=numer;
        if (numer==64)
        {
         printf("Rozwiazanie: %d\n",rozwiazanie);
         rozwiazanie++;
         for (i=2;i<10;i++)
         {
          for (j=2;j<10;j++)
          {
           printf("%3d ",szachownica[j][i]);
          }
          printf("\n");
         }
        }
        umiesc_konika(x+1,y-2,numer+1);
        umiesc_konika(x+2,y-1,numer+1);
        umiesc_konika(x+2,y+1,numer+1);
        umiesc_konika(x+1,y+2,numer+1);
        umiesc_konika(x-1,y+2,numer+1);
        umiesc_konika(x-2,y+1,numer+1);
        umiesc_konika(x-2,y-1,numer+1);
        umiesc_konika(x-1,y-2,numer+1);
        szachownica[x][y]=0;
      }
    }
    int main()
    {
      przygotuj_pola();
      xk=2;yk=2;nr=1;rozwiazanie=1;
      umiesc_konika(xk,yk,nr);
    }

0

Nie będę czytał całego kodu, ale skoro masz wszystkie możliwe rozwiązania to zwróć pierwsze i po kłopocie.

0

Zwrócić pierwszą to nie problem tyle że po zwróceniu odpowiedzi program nie kończy działania

0

exit(0) - definitywnie kończy program.

0

Pewnie dlatego, ze instrukcje wypisywania masz w pętli.

0

exit(0); działa dzięki. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1