170 похожих чатов

Ребят, всем привет, есть такая задача: Буратино поднимается по лестнице из

трех пролетов, по 5, 8 и 9 ступеней.

Поднимаясь по лестнице он может наступить на следующую ступень, перешагнуть одну ступеньку, или перешагнуть через две ступеньки.

Однако он обязательно должен наступить один раз на площадку между пролетами.

Сколькими различными способами он сможет подняться по лестнице.

Пример одного из способов: перешагнуть две ступеньки, перешагнуть одну ступеньку (оказались на первом пролете), два раза перешагнуть через две ступеньки и два раза ступить на следующую ступеньку (оказались на втором пролете), три раза перешагнуть через две ступеньки (оказались в конце лестницы)

Решение дать в виде php функции, которая бы принимала три параметра - количество ступенек в каждом из трех пролетов


Я ее представляю следующим образом:
У меня есть 1 ступенька - кол-во способов - 1
2 ступеньки - 2, 3 ступеньки - 4, 4 -5, 5 - 8, 6 -13 и тд

Я так понимаю это отсылка к Фибоначи.
потом просто суммирую три пролета.

Вот решение на php:

<?php
//возвращает n-е число Фибоначчи.
function fib($n) {
$a = 1;
$b = 1;
for ($i = 3; $i <= $n; $i++) {
$c = $a + $b;
$a = $b;
$b = $c;
}
return $b;
}

//количество способов которыми можно подняться по леснице из 3-ех пролётов
function upStairs($stairs1 = 5, $stairs2 = 8, $stairs3 = 9) {
return fib($stairs1) + fib($stairs2) + fib($stairs3);
}

echo 'Количество различных способов, которыми можно подняться по лестнице: ' . upStairs(1, 1, 1);

Мне ответили «Очень близко.
Но есть небольшая ошибка
в конфигурации 1 1 1 код вернет 3
в реальности ответ 1..»

Я не могу понять как можно подняться одним способом если нужно обязательно наступить на пролет, как сказано в условии задачи? Помогите разобраться пожалуйста

3 ответов

57 просмотров

Это на собеседовании тебе дали?) Или сам для себя решаешь?

может имеется виду разных? у тебя получается везде по одно лестнице? как бы одинаковые способы

тебе нужно еще после этого искать уникальные

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
10
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Изменение типа с SomeException на String и правда удобней @cheese_hs . А вот такой вариант насколько некрасив еще? loadConfigDB :: IO (Either String ConfigDataBase) loadConfi...
Camara
7
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта