Witajcie. Mam problem z algorytmem konika szachowego. Mianowicie:
bool konik::ruszSkoczka(int x, int y, int nr)
{
const int rx[8] = {1,2,2,1,-1,-2,-2,-1};
const int ry[8] = {-2,-1,1,2,2,1,-1,-2};
int tmp_x, tmp_y;
szachownica[x][y] = nr;
if(nr == dl_szachownica * dl_szachownica)
{
for(int i=0 ; i<dl_szachownica ; i++)
{
for(int j=0 ; j<dl_szachownica ; j++)
cout << szachownica[j][i] << " ";
cout << endl;
}
return 1;
}
else
{
for(int i = 0; i < 8; i++)
{
tmp_x = x + rx[i];
tmp_y = y + ry[i];
if(tmp_x >= 0 && tmp_x < dl_szachownica && tmp_y >= 0 && tmp_y <= dl_szachownica && szachownica[tmp_x][tmp_y] == 0)
{
if(ruszSkoczka(tmp_x, tmp_y, nr+1) == true)
{
return true;
}
}
}
szachownica[x][y] = 0;
}
return false;
}
Wynik niestety jest następujący:
Podaj dlugosc szachownicy: 5
1 0 17 10 3
18 0 2 15 8
25 16 9 4 11
0 19 14 7 22
0 24 21 12 5
--- WYSWIETLAM TABLICE ---
1 18 25 0 0
0 0 16 19 24
17 2 9 14 21
10 15 4 7 12
3 8 11 22 5
--- KONIEC WYSWIETLANIA ---
Czy mógłby ktoś wskazać błąd w algorytmie :?