Рубрики
Uncategorized

Подробное объяснение алгоритма подъема по лестнице на основе go и PHP

Автор оригинала: David Wong.

Подъем по лестнице

Стержень вопроса:

Предположим, вы поднимаетесь по лестнице. Вам потребуется n шагов, чтобы подняться на вершину здания. Вы можете подниматься на одну или две ступеньки за раз. Сколькими различными способами вы можете подняться на вершину здания? Примечание: заданное n является положительным целым числом. Пример 1: ввод: 2. Результат: 2. Пояснение: есть два способа подняться на крышу. 1. Заказ 1 + заказ 1 2. Заказ 2 пример 2: ввод: 3. Результат: 3. Пояснение: есть три способа подняться на крышу. 1. 1 заказ + 1 заказ + 1 заказ 2. 1 заказ + 2 заказа 3. 2 заказа + 1 заказ источник: сила пряжка

Этот вопрос поднимайтесь по лестнице Это классическая иди в ритме.

Размышления о решении проблем

Есть два способа решить эту проблему

1. Динамическое программирование

2. Последовательность Фибоначчи

Динамическое программирование-это более важные навыки и идеи для решения проблем. Я напишу серию статей, которые помогут вам лучше понять динамическое планирование.

Мы используем этот вопрос Последовательность Фибоначчи Чтобы понять.

Последовательность Фибоначчи также называется последовательностью Фибоначчи Серия кроликов , относится к: 1, 1, 2, 3, 5, 8, 13, 21 В математике его рекурсивная формула такова: F, f, f (n – 1) + F (n – 2) (n ≥ 3, n ∈ n *).

В этой теме мы можем найти, что: Есть два способа пройти по второй лестнице : 1-й заказ + 1-й заказ, 2-й заказ Есть три способа пройти по трем лестницам : 1 заказ + 1 заказ, 1 заказ + 2 заказа, 2 заказа + 1 заказ Есть пять способов пройти по четырем лестницам : 1 заказ + 1 заказ + 1 заказ + 1 заказ, 1 заказ + 2 заказа + 1 заказ, 1 заказ + 1 заказ + 2 заказа, 2 заказа + 2 заказа, 2 заказа + 1 заказ + 1 заказ ……

Подводя итог, мы можем обнаружить, что существует m методов подъема по n-ступенчатой лестнице, и M соответствует последовательности Фибоначчи Закон, так прямо по кодексу!

Реализация Go

//Fibonacci sequence
// 1 1 2 3 5 8 13 ....
func climbStairs2(n int) int {
 //Step 1 directly returns to 1
 if n == 1 {
  return 1
 }
 //Step 2 direct return 2
 if n == 2 {
  return 2
 }
 current := 2
 pre := 1
 //The current step method is the sum of the first two steps
 for i := 3; i <= n;i ++ {
  current = current + pre
  pre = current - pre
 }
 return current
}

Реализация PHP, в общей сложности две версии реализации, посмотрите, какой код вам нравится

function climbStairs($n) {
 // if($n==1) return 1;
 // $dp[1]=1;
 // $dp[2]=2;
 // for($i=3;$i<=$n;$i++){
 //  $dp[$i]=$dp[$i-1]+$dp[$i-2];
 // }
 // 
 // return $dp[$n];

 if($n <= 2) return $n;
 $dp = [1 => 1,2 => 2];
 foreach(range(3,$n+1) as $v){
  //Recursive addition, this stair climbing is fibolache algorithm to find the final sum of F (n-1) + F (n-2)
  $dp[$v] = $dp[$v-1] + $dp[$v-2]; 
 }

 return $dp[$n];
}

резюме

Эта статья о реализации алгоритма подъема по лестнице на языке go и PHP подробное объяснение статьи, представленной здесь, больше связано с содержанием алгоритма подъема по лестнице на языке go PHP пожалуйста, найдите предыдущие статьи или продолжайте просматривать соответствующие статьи ниже, я надеюсь, что вы будете поддерживать developeppaer больше в будущем!

Оригинал: “https://developpaper.com/detailed-explanation-of-stair-climbing-algorithm-based-on-go-and-php/”