Un robot situado en una cuadrícula mxn esquina izquierda (a partir de la figura punto por debajo de la etiqueta "Inicio").
El robot sólo puede dar un paso hacia la derecha o hacia abajo. Robot tratando de llegar a la esquina inferior derecha de la cuadrícula (en la siguiente figura con la etiqueta "Finalizar").
P. ¿Cuántos caminos diferentes que hay en total?
Por ejemplo, el mapa es una cuadrícula de 7 x 3. ¿Cuántos posibles caminos tienen?
Ejemplo 1:
Entrada: m = 3 , n = 2 Salida: 3 Explicación: De la esquina superior izquierda, un total de tres caminos para llegar a la esquina inferior derecha. 1 . Derecho -> derecho -> abajo 2 derecha -.> Down -> Derecha 3 abajo -> derecho -> derecha
Ejemplo 2:
Entrada: m = . 7 , = N- . 3 de salida: 28
consejos:
1 <= m, n <= 100
- Información sujeta a asegurar que la respuesta es menor o igual a
2 * 10 ^ 9
Pensando: sensación de repente recursiva fórmula, recursivo para F (m, n) = F (m-1, n) + F (m, n-1);
código:
1 clase Solution { 2 pública : 3 int uniquePaths ( int m, int n) { 4 // F (m, n) = F (m-1, n) + F (m, n-1); 5 int a [ 101 ] [ 101 ]; 6 si (m == 0 || n == 0 ) de retorno 1 ; 7 para ( int i = 0 ; i <m; ++ i) { 8 para ( int j = 0 ; j <n; ++ j) { 9 si (i == 0 || j == 0 ) { 10 a [i] [j] = 1 ; 11 } más { 12 a [i] [j] = a [i- 1 ] [j] + a [i] [j- 1 ]; 13 } 14 } 15 } 16 de retorno a [m - 1 ] [n - 1 ]; 17 } 18 };
Postscript: Esta pregunta debería haber dicho en las permutaciones y combinaciones en la escuela secundaria, de hecho, el resultado es m + n m paso en la etapa de selección de inmediato, por lo que un retorno directo a C (m, m + n) puede ser.