Мистер Фокс разрабатывает программу для бота-лунохода. Сегодня его боту нужно добраться
Мистер Фокс разрабатывает программу для бота-лунохода. Сейчас его боту необходимо добраться по прямой дороге длиной 22 фута от космодрома до базы, попутно отобрав ценный предмет. Будем считать дорогу отрезком, в левом конце которого находится космодром, в правом конце база, а ровно в центре лежит ценный предмет. Мистер Фокс может давать роботу три команды: A сместиться на 1 фут на право, B сместиться на 2 фута на право, C сместиться на 3 фута на право. Набор из 22 фута команд A является удачным, так как приводит робота на базу (попутно он заберет ценный предмет, поэтому что остановится около него), а вот набор BBCCCCCC успешным не является: бота на базу он приведет, но вот ценный предмет бот не заберет, так как не остановится около него. Сколько существует успешных комплектов команд?
Задать свой вопросКод на Ruby 2
def f0(number, log)
v = 1
n = number + v
log = "logA"
return [n, log]
end
def f1(number, log)
v = 2
n = number + v
log = "logB"
return [n, log]
end
def f2(number, log)
v = 3
n = number + v
log = "logC"
return [n, log]
end
def countWays(start_num, end_num, op_number, max_steps = 0)
ways =
ways.store(start_num.to_s, start_num)
max_steps = max_steps == 0 ? (start_num - end_num).abs : max_steps
count = 0
for steps in 1..max_steps
new_ways =
ways.each_pairlog, num
for k in 0..op_number-1
num1, log1 = f0(num, log) if k == 0
num1, log1 = f1(num, log) if k == 1
num1, log1 = f2(num, log) if k == 2
if num1 == end_num then
log1 += " = " + end_num.to_s
count += 1
puts log1
elsif num1.between?(start_num, end_num)
new_ways.store(log1, num1)
end
end
ways = new_ways
end
return count
end
p countWays(0, 11, 3) с 0 до 11, 3 различных команды
Вывод 504
Так как длина путей до ценного объекта и от объекта до базы - одинаковы, то всего вариантов 504*504 = 254016
На отметку 1 фут бот может попасть с помощью одной команды A;
на отметку 2 фута - с подмогою команд AA и B (всего 2 набора команд);
на отметку 3 фута - с поддержкою команд AAA, AB, BA и C (4 комплекта).
Так как за одну команду бот может переместиться на 1, 2 либо 3 фута, то для подсчета количества комплектов команд, позволяющих боту попасть на отметки N gt; 3, можно использовать формулу
K(N) = K(N-1)+K(N-2)+K(N-3).
K(4) = K(3)+K(2)+K(1) = 4+2+1 = 7
K(5) = K(4)+K(3)+K(2) = 7+4+2 = 13
K(6) = K(5)+K(4)+K(3) = 13+7+4 = 24
K(7) = K(6)+K(5)+K(4) = 24+13+7 = 44
K(8) = K(7)+K(6)+K(5) = 44+24+13 = 81
K(9) = K(8)+K(7)+K(6) = 81+44+24 = 149
K(10) = K(9)+K(8)+K(7) = 149+81+44 = 274
K(11) = K(10)+K(9)+K(8) = 274+149+81 = 504
Так как вторая часть пути бота также имеет длину 11, то общее количество успешных комплектов команд = 504*504 = 254016
-
Вопросы ответы
Статьи
Информатика
Статьи
Физика.
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.