Escoria, con una Leetcode0070 pincel que aprender a subir las escaleras

título Descripción

Supongamos que usted está subiendo escaleras. P ara que necesita para llegar al techo.

Cada vez que se puede subir uno o dos pasos. ¿De cuántas maneras se puede subir a la azotea de la misma?

Nota: Dado n es un entero positivo.

Ejemplo 1:

Entrada: 2
de salida: 2
Explicación: Hay dos métodos pueden subir el techo.
1,1 + 1-orden orden
2.2 Orden
Ejemplo 2:

Entrada: 3
Salida: 3
Explicación: Hay tres métodos pueden subir a la azotea.
1,1 + 1 + 1 fin de orden de pedido por
orden 2,1 + 2-orden
3,2 + 1-fin-fin

Fuente: estancia botón (LeetCode)
enlace: https: //leetcode-cn.com/problems/climbing-stairs
propiedad de la deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.

Vernácula Título:

una capacidad limitada para poder subir una vez un paso o dos pasos, y le preguntó cuánto los de orden n método total de pasos tienen?

algoritmo:

¿Cuántos tipos de programas de muchos científicos antiguos prefieren para calcular manualmente esto, el recursivo Ye Hao lograr, ir un paso más, mira el resto de las necesidades n-1; ir 2 pasos, mira el resto de Ge n-2 ¿cuántos tipos de programas necesitan.

Aquí tengo la intención por este problema, sino también ser analizada desde la simple a examinar a fondo DP (programación dinámica) algoritmo de programación dinámica se

.

Echar un vistazo a la etapa i de la caminata y que estén directamente relacionados. 

Sólo el paso i-ésimo i-1 y el primer orden, está directamente relacionada con el número de i-2 orden.

dp

0

1

2

3

4

5

6

 

0

1

2

3

5

8

13

 

dp [i] = dp [i-2] + dp [i-1];

código de lenguaje C es completa

#include <stdio.h>
#include <stdlib.h>
int climbStairs(int n)
{
    if(n<0)  return 0;
    if(n<=2) return n;
    int dp[n+1];  //

    dp[0]=0;
    dp[1]=1;
    dp[2]=2;
    int i=3;
    for(i=3; i<=n; i++)
    {
        dp[i]=dp[i-1]+dp[i-2];
    }
    return dp[n];
}

int main()
{
    int n;
    scanf("%d",&n);
    int result=climbStairs(n);
    printf("%d\n",result);
    return 0;
}

 

Publicado 16 artículos originales · ganado elogios 2 · Vistas 2250

Supongo que te gusta

Origin blog.csdn.net/qq_39729096/article/details/105284763
Recomendado
Clasificación