Ваня рисует прямоугольник и разбивает его на M строк и N столбцов. Он заполняют некоторые ячейки монетками "Х". Две разные пустые ячейки заполняет человечком "Y" и сундуком "В". Человечек может передвигаться в соседнюю ячейку (соседними считаются ячейки, граничащие по стороне), а также человек может передвигать сундук для этого нужно встать в соседнюю к сундуку ячейку и толкнуть его от себя (сходит на ячейку к сундуку). При этом сундук передвинется на одну соседнюю ячейку в направлении, заданном толчком, а человечек переместится в ячейку, где только что находился клад. Все объекты должны быть внутри прямоугольника. В прямоугольнике могут остаться пустые ячейка ".". Задача человечка вытолкнуть клад из прямоугольника, выход из прямоугольника Ваня обозначает буквой "Т". Необходимо написать программу, которая определяет последовательность толчков и передвижений человечка, следуя которой сундук можно передвинуть к выходу (выход находится в пустой ячейке). Так как клад очень тяжелый, количество толчков должно быть минимальным. При наличии нескольких оптимальных последовательностей следует указать любую из них. Пример прямоугольника
. . Y
. B .
T X X
Формат входных данных
Первая строка содержит числа M и N . Следующие M строк содержат описание лабиринта. Каждая строка состоит из N символов, описывающих ячейки лабиринта: заполненная монетками ячейка обозначается латинской буквой "X", пустая ячейка обозначается символом "." (ASCII код 46), начальная позиция человечка — буквой "Y", начальная позиция сундука — латинской буквой "В", выход — латинской буквой "Т".
Формат выходных данных
Если решения не существует, то выводится "NO". Иначе, в первой строке выходного должно содержаться слово "YES", а во второй строке — последовательность символов, определяющая действия человечка, в частности, символы "w", "e", "n", "s" обозначают передвижения человечка на запад, восток, север и юг соответственно, а символы "W", "E", "N", "S" обозначают толчки человечка в соответствующих направлениях.
Пример ввода/вывода
Ввод Вывод
3 3 YES
..Y sWnwS
.B.
TXX
Program n1;
Uses CRT;
Const n=15;
Var A: array[1..n] of integer; B: array[1..n] of integer;
i,k,max: integer;
begin
randomize;
clrscr;
Writeln('ishodny massiv');
For i:=1 to n do
begin
a[i]:=random(100);
a[i]:=a[i]-50;
write(a[i]:4);
end;
writeln;
writeln('polychenny massiv');
max:=0;
For i:=1 to n do
begin
b[i]:=-a[i];
write(b[i]:4);
If a[i]=b[i] then k:=k+1;
If (b[i]>0)and(b[i]>max) then max:=b[i];
If (b[i]<0)and(-b[i]>max) then max:=-b[i];
end;
writeln;
Writeln('Kolychestvo neizmenyvshihsa elementov=',k,', samyi bolshoy po modyly element raven =',max);
writeln
end.
Первая
Program n1;
Uses CRT;
Var a,b,c,k: integer;
begin
Writeln('Vvedite a,b,c');
Readln(a,b,c);
If (a=b)and(b=c) then begin k:=1; writeln('Ravnostoronnij') end else
If (a=b)or(b=c)or(a=c) then begin k:=1; writeln('Ravnobedrennij'); end;
If (sqr(a)=sqr(b)+sqr(c))or(sqr(b)=sqr(a)+sqr(c))or(sqr(c)=sqr(b)+sqr(a))
then begin k:=1; writeln('Pryamoygolnij'); end;
If (a>b+c)or(b>a+c)or(c>a+b) then begin k:=1; writeln('treygolnik nelza sostavit'); end;
If k=0 then writeln('Treygolnik Raznostoronnij');
readln
end.
Вторая
Program n1;
Uses CRT;
Var a,b,c: integer;
begin
ClrScr;
Writeln('Vvedite a,b,c');
Readln(a,b,c);
If (a>0)and(b>0)and(c>0) then writeln('Summa kvadratov=',sqr(a)+sqr(b)+sqr(b));
If (a mod 2=0)or(b mod 2=0)or(c mod 2=0) then writeln('Summa =',a+b+c,', Proizvedenie =',a*b*c);
readln
end.