[刷 题] 70 Escaleras

Solicitud

  • Hay n escalones en la escalera. ¿Cuántas maneras de subir las escaleras cada vez que sube uno o dos escalones?

Ejemplos

  • Entrada: n = 3
  • [1,1,1], [1,2,], [2,1]
  • Salida: n = 3

Lograr

  • De arriba hacia abajo (recursivo)

Recursivo

1  clase Solución {
 2  
3  privado :
 4      int calcWays ( int n) {
 5          
6          if (n == 0 || n == 1 )
 7              return  1 ;    
8              
9          retorno calcWays (n- 1 ) + calcWays (n- 2 );
10      }
 11      
12  público :
 13      int climbStairs ( int n) {
 14          
15          return calcWays (n);
16      }
17 };
Ver código

Búsqueda recursiva + memoria

 Solución de 1 clase {
 2  
3  privado :
 4      vector < int > memo;
5      
6      int calcWays ( int n) {
 7          
8          if (n == 0 || n == 1 )
 9              return  1 ;    
10          
11          if (memo [n] == - 1 )    
 12              memo [n] = calcWays (n- 1 ) + calcWays (n- 2 );
13              
14          memorando de regreso [n];
15      }
16      
17  público :
 18      int climbStairs ( int n) {
 19          
20          memo = vector < int > (n + 1 , - 1 );
21          retornan calcWays (n);
22      }
 23 };
Ver código

  • De abajo hacia arriba (programación dinámica)
1  clase Solución {
 2      
3  público :
 4      int climbStairs ( int n) {
 5          
6          vector < int > memo (n + 1 , - 1 );
7          
8          memo [ 0 ] = 1 ;
9          memo [ 1 ] = 1 ;
10          para ( int i = 2 ; i <= n; i ++ )
 11              memo [i] = memo [i- 1 ] + memo [i- 2 ];
12          volver memo [n];
13      }
 14 };
Ver código

Relacionados

  • Triángulo 120
  • 64 suma de ruta mínima

 

Supongo que te gusta

Origin www.cnblogs.com/cxc1357/p/12717349.html
Recomendado
Clasificación