Программа для робота ** очень большом листе клетчатой бумаги нарисовали систему...

0 голосов
23 просмотров

Программа для робота
На очень большом листе клетчатой бумаги нарисовали систему координат. В точке (0; 0) маленький робот. Он может выполнять команды RIGHT, LEFT, UP, DOWN, смещаясь на единичный отрезок в соответствующем направлении. Вася пишет программу для робота, состоящую ровно из 12 команд и приводящую его в точку с координатами (6; 4). Ему стало интересно: а сколько всего существует таких программ? Помогите ему ответить на этот вопрос. В качестве ответа укажите одно натуральное число — количество таких команд.

Комментарий. Если робот находится в начале координат и выполнил команду RIGHT, он окажется в точке (1; 0). Если после этого он выполнит команду LEFT, то вернется обратно в точку (0; 0). Если теперь он выполнит команду UP, то окажется в точке (0; 1), а если затем выполнит команду DOWN, то опять вернется в точку (0; 0). Программа робота – это набор команд. Программы, отличающиеся перестановкой команд, считаются различными.

Например, есть 9 различных программ, состоящие ровно из 3 команд, приводящие робота из точки (0; 0) в точку (1; 0): RIGHT LEFT RIGHT; UP DOWN RIGHT; DOWN UP RIGHT; UP RIGHT DOWN; DOWN RIGHT UP; RIGHT UP DOWN; RIGHT DOWN UP; RIGHT RIGHT LEFT.


Информатика (434 баллов) | 23 просмотров
Дан 1 ответ
0 голосов

Ответ: 9504 

var steps := 12; // За кол-во ходов
var Xend  := 6; // В точку с координатой X
var Yend  := 4; // ... и Y

var vars := 0; procedure Find(step, X, Y : Integer);

begin 
    if step = 0 then   
        vars += (X = Xend) and (Y = Yend) ? 1 : 0
    else   
        begin     
             Find(step - 1, X + 1, Y    );     
             Find(step - 1, X - 1, Y    );     
             Find(step - 1, X    , Y + 1);     
             Find(step - 1, X    , Y - 1);   
        end;
end; 
begin 
     Find(steps, 0, 0); 
     Print(vars);
end.

(90 баллов)