Uses crt;var c,i,j,n:integer;a:array [1..1000] of integer;begin clrscr;read(n);for i:=1 to n doread(a[i]);for i:=1 to n dofor j:=1 to n-1 doif (a[j] mod 10) > (a[j+1] mod 10) then beginc:=a[j];a[j]:=a[j+1];a[j+1]:=cend;for i:=1 to n dowrite(a[i],' ')<span>end.</span>
Мы находимся в точке по горизонтали А и по вертикали А. Нам нужно попасть в точку F. Смотрим напротив строки А по горизонтали и вертикали куда можно идти, есть три варианта: сразу в F, в точку В и в точку С. Если идти сразу в F то пройденный путь составит 18. Но нам нужен кратчайший путь поэтому ищем где цифра поменьше например С. Идём в С и пройденный путь уже составляет 3, теперь смотрим по вертикали (т.к по горизонтали мы можем пойти только в точку F но нам нужен наименьший путь) куда лучше пойти и где значение меньше и это D т.к там значение наименьшее - 1.Идём в эту точку и путь уже равен 3+1=4, смотрим по горизонтали напротив D и видим что сразу можем попасть в точку F. Доходим до конца и путь составляет 4+3=7 - это кратчайший путь.
Лучше советую смотреть сразу минимальное значение в столбике F и от неё смотреть путь до точки А.
Либо рисовать графы как в комментарии выше, что скорее гораздо понятнее но дольше
8) 1
запредположим вначале он в точке 0,0 выполнив три команды попадет в точку 1,2 следовательно повторив эти движения три раза попадет в точку 3,6, для возврата из которой надо выпонить 1 команду
9) знать бы еще какие команды он может выполнять... пример алгоритма
while 1:
if впереди стена then break
else вперед
поворот направо
while 1:
красить
if впереди стена then break
else вперед
поворот направо
вперед
while 1:
if слева стена then крась; вперед
else break
Var i,n: integer;
begin
n:=1;
for i:=1 to n do begin
n:=n*i;
end;
writeln (n);
end.