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];
}
};