Это будет общая постановка задачи:Объяснения теста в откидном программе Заключенных стен
Заключенные убегает из тюрьмы, перепрыгивая через N стен каждый с высотой каждой стенки заданной в массиве. Он может прыгать на высоту в три метра, но после каждого прыжка он проскакивает на метры из-за некоторых неконтролируемых факторов (ветер, скользкая стена и т. Д.).
Similar problem statement mentioned here
Задача программирования дано было отладить функцию, которая включает в себя четыре параметра -
NoOfJumps(int x, int y, int N, int Height[])
- Количество метров он прыгает
- Количество метров он скользит вниз по стене
- Количество стен
- Высота стен в виде массива
Первый тест был для параметров - (10, 1, 1, {10})
10 Будучи метров он прыгает, 1 метр он скользит вниз, Количество стенок равно 1, и высоту стены быть 10. Сейчас:
effectiveJump = х - у = 9.
Так что ему придется прыгать в два раза, чтобы прыгать через стены. Итак, эта функция должна возвращать 2 (общее количество прыжков, необходимых для выхода).
Был еще один тест для параметров - (3, 1, 5, {20,5,12,11,3})
3 будучи метров он прыгает, 1 метр он скользит вниз, Количество стенок - 5, высота стен - 20 м, 5 м, 12 м, 11 м, 3 м. Сейчас:
effectiveJump = х - у = 2.
Мы получили выход для указанных значений параметров, как 24
NoOfJumps(3, 1, 5, {20,5,12,11,3})
Я не могу понять, как этот выход значение получается. Как точно расположены стены?
я могу думать только одно решение для углового случая, т.е. когда человек прыгает через стену
(when (x) > remaining height of the wall
),
он не должен скользить вниз еще я не могу получить требуемое решение. Например, во втором испытательном стенде на первой стене, когда человек находится на высоте 18 м, и он прыгает с высоты 3 м до 21 м и не сползает, когда он пересек эту стену. Затем он начинает прыгать с 21, а не на 20.Последовательность прыжков будет следующей:
0-> 2-> 4-> 6-> 8-> 10-> 12-> 14-> 16-> 18-> 21-> 23-> 26-> 28-> 30-> 32-> 34-> 36-> 39-> 41-> 43-> 45-> 47-> 50-> 53
Предполагая стены на высоте 20, 25, 37, 48 , 51.
Является ли это правильным предположением для решения проблемы?
У вас есть информация? функция-отладка может быть ошибочной. ... или тесты .... – Jakumi
Нам пришлось отлаживать функцию и передавать ей тестовые примеры (больше тестовых случаев может быть скрыто). После тестирования и компиляции я мог видеть ожидаемый результат и мой вывод для второго тестового примера. Ожидаемый результат был для этого 24. В функции отладки нам был предоставлен следующий код: 'totalJump + = wallHeight [i]/effectiveJump' (первоначально это было' totalJump = + wallHeight [i]/effectiveJump') – Sitansu
wallHeight относится к массиву, содержащему высоты стена. totalJump был увеличен для каждой итерации цикла, который выполнялся 5 раз (без стенок) – Sitansu