1 pregunta
Supongamos que estás subiendo escaleras. Se necesitan n pasos para llegar a la cima del edificio.
Puedes subir 1 o 2 escalones a la vez. ¿De cuántas maneras diferentes puedes subir a la cima de un edificio?
Nota: Dado n es un número entero positivo.
Ejemplo 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
Ejemplo 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1 阶 + 1 阶 + 1 阶
1 阶 + 2 阶
2 阶 + 1 阶
2 respuestas
Descomponga el problema en subestructuras y utilice programación dinámica para resolverlo. Definiendo dp [i] significa que hay varias formas de subir el escalón i. Podemos obtener la ecuación de estado dp [i] = dp [i - 1] + dp [i - 2], que significa subir un escalón. y subir dos escalones en el tiempo anterior Suma del método a i.
func climbStairs(n int) int {
if n == 1 || n == 2 {
return n
}
var s [1005]int
s[1] = 1
s[2] = 2
for i := 3; i <= n; i++ {
s[i] = s[i - 1] + s[i - 2]
}
return s[n]
}
3Enlaces relacionados
Fuente: LeetCode
Enlaces: https://leetcode-cn.com/problems/climbing-stairs
https://blog.csdn.net/myz123321/article/details/90726358