Итак, я построил эту программу для создания различных лестничных клеток. По существу проблема заключается в следующем: учитывая целое число N, сколько разных способов вы можете построить лестницу. N гарантированно будет больше 3 и меньше 200. Любой предыдущий шаг не может быть больше, чем следующий шаг, иначе он победит цель лестницы.Запоминание функции Java
Поэтому, учитывая, N = 3 Вы можете построить одну лестницу: 2 шага, а затем 1 шаг после этого
Учитывая N = 4 Вы можете построить одну лестницу: 3 шага, а затем 1 шаг после этого
С учетом N = 5 Вы можете построить две лестницы: 3 ступени, а затем 2 шага ИЛИ 4 шага, а затем 1 шаг.
Моя функция внизу, и она работает, за исключением того, что ее время работы слишком медленное. Поэтому я думал о попытке сделать меморандум о функции, но, честно говоря, я не совсем понимаю, как это реализовать. Если бы я мог получить некоторую помощь в том, как это сделать, это будет здорово.
public static void main(String [] args)
{
System.out.println(answer(200));
}
public static int answer(int n) {
return bricks(1,n) -1;
}
public static int bricks(int height, int bricksLeft)
{
if(bricksLeft == 0)
{
return 1;
}
else if(bricksLeft < height)
{
return 0;
}
else
{
return bricks(height +1, bricksLeft - height) + bricks(height +1, bricksLeft);
}
}
Это было далеко, один из лучших ответов, которые я когда-либо получил на вопрос раньше. Большое вам спасибо за то, что вы не только дали мне краткую концепцию, но и связали ее с моей проблемой. – GreenSkies
@ GreenSkies Всегда рад дать подробный ответ на хорошо продуманный вопрос =] – nhouser9