насчет того что находит 3
алгоритм правильный а в реализацию вкрался человеческий фактор,
в итоге в программе в архиве две ошибки и одна непонятность.
ошибка в инициализации - выделенную строчку надо удалить
Код: Выделить всё
// инициализация таблицы состояний
s[1,1]:=-1;
s[1,2]:=-1;
s[1,3]:=-1;
s[1,4]:= 0;
s[1,5]:= 0;
s[1,6]:= 1;
s[1,7]:= 1;
[b]s[1,1]:= 1;[/b]
s[1,8]:= 1;
s[2,1]:=-1;
s[2,2]:= 0;
s[2,3]:= 1;
s[2,4]:=-1;
s[2,5]:= 1;
s[2,6]:=-1;
s[2,7]:= 0;
s[2,8]:= 1;
непонятность в том что при отсчете я почемуто взял систему координат с 0 а не с 1 как в пояснении
Код: Выделить всё
//сброс накопителей координат [b]в накопители заносятся координаты начального положения фишки тоесть должнобыть
//х=1,у=1,при изменении начальных кооррдинат фишки их надо записывать именно тут[/b]
x := 0;
y := 0;
//скомбинированные в цикле проверки
for i:=1 to 10 do
begin
//вычисление текущих координат фишки
x:=x+v[1,i];
y:=y+v[2,i];
//проверка выхода за границы доски [b]при отсчете с нулевых координат должно быть"if (x<0) or (y<0) or (x>4) or (y >4) then"[/b]
if (x<0) or (y<0) or (x>5) or (y >5) then
n:=true;
//проверка отличия от предыдущего набора ходов
if (v[1,i]<>p[1,i])or(v[2,i]<>p[2,i]) then
o:=true
else
o:=false;
//проверка прихода фишки в конечные координаты [b]так как были взяты начальные координаты фишки 0,0
//то код ниже работает правильно если же брать начальные координаты фишки 1,1 должно быть
// "if (x=5)and(y=5)and o and (n<> true) then " тоесть конечные координаты фишки надо вводить сюда[/b]
if (x=4)and(y=4)and o and (n<> true) then
k[i]:=k[i]+1;
end;