preguntas de la entrevista. 08.01 problemas de Tres Pasos

problemas de tres pasos. Hay un niño está en la escalera, un nivel de orden n, un niño puede estar en el orden de 1, 2 y 3 de la orden. Implementar un método para calcular cuántas maneras hay niños en las escaleras. Los resultados pueden ser muy grandes, es necesario morir 1,000,000,007 resultados.

Ejemplo 1:

 Entrada: n = 3 
 de salida: 4
 Descripción: Hay cuatro movimientos
Ejemplo 2:

 Entrada: n = 5
 Salida: 13
Nota:

n en el intervalo [1 1000000] entre

Ideas de resolución de problemas (programación dinámica):

Para el paso a la n-ésima actual orden, puede seleccionarse de la primera escalera de n-1, n-2-n-3 y el orden de los pasos, de modo que las escaleras y acumular la manera mencionada anteriormente

la implementación del código:

class Solution {
public:
    int waysToStep(int n) {
        if(n<=2){
            return n;
        }
        if(n==3){
            return 4;
        }
        int* dp=new int[n+1];
        dp[0]=0;
        dp[1]=1;
        dp[2]=2;
        dp[3]=4;
        int mod=1000000007;
        for(int i=4;i<=n;++i){
            dp[i]=((dp[i-1]%mod+dp[i-2]%mod)%mod+dp[i-3]%mod)%mod;
        }
        return dp[n];
    }
};

 

Publicados 253 artículos originales · elogios ganado 15 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/junjunjiao0911/article/details/104749660
Recomendado
Clasificación