Tema Descripción
Un mono sube y salta en una colina con no más de 30 niveles. El mono puede saltar 1 nivel o 3 niveles con un solo paso hacia la montaña. Intenta averiguar cuántos métodos diferentes de escalada hay.
entrada de muestra
30
Salida de muestra
58425
Ideas para resolver problemas:
- Primero, encuentre la relación de recurrencia de f[k].
Sea n = 30. El último escalón para subir la montaña es llegar al escalón 30. Hay f[30] diferentes formas de escalar. El primero se encuentra en el nivel 29 (salta 1 nivel para llegar), hay f[29] especies, el segundo está en el nivel 27 (salta 3 niveles para llegar), hay f[27] especies; entonces hay:
f[30]=f[29]+f[27]
y así sucesivamente, generalmente hay una relación de recurrencia:
f[k]=f[k-1]+f[k-3] (k> 3) - Determine las condiciones iniciales
f[1]=1, es decir, 1=1
f[2]=1, es decir, 2=1+1
f[3]=2, es decir, 3=1+1+1, 3=3 - Implementación de la recursividad
De acuerdo con la relación recursiva anterior y las condiciones iniciales, establezca un ciclo y aplique la recursividad para encontrar f[n].
sección de código
#include<stdio.h>
long fun(int n)
{
long key;
if(n==1)
key=1;
else if(n==2)
key=1;
else if(n==3)
key=2;
else
key=fun(n-1)+fun(n-3);
return key;
}
int main()
{
int m;
long result;
scanf("%d",&m);
result=fun(m);
printf("%ld",result);
return 0;
}
La clave de esta pregunta es comprender la relación de recurrencia en la pregunta y resolverla de acuerdo con la relación de recurrencia y las condiciones iniciales.