Skoczek zapisanie algorytmu bez użycia rekurencji
Mariusz:
Mamy dany rekurencyjny algorytm znajdowania drogi skoczka
http://wklej.org/id/3156329/
Jak zapisać go bez użycia rekurencji
30 maj 02:13
jc: Myślę, że będziesz potrzebował stos na odkładanie ruchów.
Program się trochę skomplikuje. Może nawet będzie działał.
30 maj 07:51
jc: Może nawet będzie działał wolniej.
30 maj 08:02
30 maj 13:09
jc: Jak widzę, program bez rekurencji jest nawet prostszy
30 maj 13:25
Mariusz:
if (u >= 0 && u < n && v >= 0 && v < n
&& h[u][v] == 0
&& ((h[x = u][y = v] = ++i) == n*n)) {
result = 1;
}
Jak inaczej można zapisać zapisać ten warunek
tzn tak aby łatwiej można było zapisać także w Pascalu
k[i−−] = −1;
Tutaj jest najpierw dekrementacja a później przypisanie ?
Pytający dobrze się spisałeś
30 maj 22:53
jc: Jak otoczysz szachownicę marginesem, nie będziesz musiał zadawać 4 pierwszych
pytań.
30 maj 23:14
Pytający:
if (u >= 0 && u < n && v >= 0 && v < n
&& h[u][v] == 0
&& ((h[x = u][y = v] = ++i) == n*n)) {
result = 1;
}
Równoważny zapis:
if (u >= 0 && u < n && v >= 0 && v < n) {
if (h[u][v] == 0) {
x=u;
y=v;
++i;
h[x][y]=i;
if(i==n*n) {
result=1;
}
}
}
int a, i=0;
a=i++; // postinkrementacja, a==0, i==1
int a, i=0;
a=++i; // preinkrementacja, a==1, i==1
Zatem:
k[i−−] = −1;
odpowiada:
k[i]=−1;
i=i−1;
31 maj 02:25