No voy a codificarlo por usted, pero así es como puede hacerlo muy rápidamente con recursividad. Una vez que comprenda el algoritmo, debería poder codificarlo usted mismo. Intentar codificar antes de conocer el algoritmo que está buscando no es útil, pero una vez que conoce el algoritmo es prácticamente solo una cuestión de traducción.
Digamos que queremos las particiones del número n.
Tal parición se puede escribir como
- ¿Cuáles son las preguntas formuladas en las entrevistas relacionadas con la creación de redes?
- ¿Será difícil descifrar la entrevista del desarrollo de Android con solo el conocimiento básico de la estructura de datos y el algoritmo y no más que eso para los principiantes? ¿Las preguntas son demasiado complejas?
- ¿Cuáles son algunas preguntas y recursos para mi entrevista de Dropbox?
- ¿Cuánto tiempo lleva trabajar para descifrar la entrevista de codificación si no tengo una buena idea sobre la estructura de datos y el algoritmo?
- Cómo descifrar entrevista técnica de MNC
[matemáticas] n = i_1 + i_2 + \ cdots + i_k \ cdots. [/matemáticas]
Pase el primer número de la partición, que puede ser cualquier número del 1 al n (por el bien de la recursión, es importante dejar que el número sea n; generará la partición trivial
[matemáticas] n = n [/ matemáticas]
debido a esto, pero puede causar fácilmente que este caso trivial no se emita).
Ahora, para cada opción [math] i_1 [/ math] del primer elemento de la partición, debemos anotar todas las particiones posibles de [math] n – i_1 [/ math]. Esto se puede hacer de forma recursiva (bucle sobre el primer elemento, etc.), y concatenamos cada una de estas particiones con el primer elemento [math] i_1 [/ math] de la partición.
Por ejemplo, aquí están las particiones ordenadas de 5, ordenadas ya que este algoritmo las imprimiría. Primero elegiré el primer elemento de la partición para que sea lo más grande posible.
5 (excluya esta partición si lo desea)
4,1
3,2
3,1,1
2,3
2,2,1
2,1,2
2,1,1,1
1,4
1,3,1
1,2,2
1,2,1,1
1,1,3
1,1,2,1
1,1,1,2
1,1,1,1,1