"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo generar todas las combinaciones y permutaciones posibles de elementos dentro de una matriz unidimensional en PHP?

¿Cómo puedo generar todas las combinaciones y permutaciones posibles de elementos dentro de una matriz unidimensional en PHP?

Publicado el 2024-11-15
Navegar:851

How can I generate all possible combinations and permutations of elements within a one-dimensional array in PHP?

PHP: Cómo obtener todas las combinaciones posibles de una matriz unidimensional

En este artículo, profundizaremos en un método para recuperar todas las combinaciones posibles de elementos dentro una matriz unidimensional en PHP. A diferencia de otras soluciones, este enfoque garantiza que se consideren tanto las combinaciones como las permutaciones.

Declaración del problema

Dada una serie de cadenas o números, el objetivo es generar todas las combinaciones posibles de elementos, teniendo en cuenta diferentes disposiciones. Por ejemplo, 'Alfa Beta' y 'Beta Alfa' son combinaciones distintas que deben incluirse en el resultado.

Solución PHP

La solución PHP proporcionada emplea un algoritmo recursivo de búsqueda en profundidad:

Desglose de la solución

  • La función Depth_picker se invoca con la matriz inicial, una cadena vacía y una referencia de matriz vacía.
  • Se repite recursivamente a través de la matriz, agregando cada elemento al final de la cadena de resultado actual.
  • Siempre que la cadena temporal tenga elementos, se agrega a la matriz de resultado.
  • Si todavía quedan elementos en la matriz de entrada, la función se llama a sí misma con la matriz actualizada y la cadena temporal.
  • Si no quedan más elementos, la cadena temporal que contiene la combinación completa se agrega a la matriz de recopilación.

Salida

El código proporcionado produce el siguiente resultado, que contiene todas las combinaciones y permutaciones de los elementos en la matriz dada:

Array
(
    [0] =>  Alpha
    [1] =>  Alpha Beta
    [2] =>  Alpha Beta Gamma
    [3] =>  Alpha Beta Gamma Sigma
    [4] =>  Alpha Beta Sigma
    [5] =>  Alpha Beta Sigma Gamma
    [6] =>  Alpha Gamma
    [7] =>  Alpha Gamma Beta
    [8] =>  Alpha Gamma Beta Sigma
    [9] =>  Alpha Gamma Sigma
    [10] =>  Alpha Gamma Sigma Beta
    [11] =>  Alpha Sigma
    [12] =>  Alpha Sigma Beta
    [13] =>  Alpha Sigma Beta Gamma
    [14] =>  Alpha Sigma Gamma
    [15] =>  Alpha Sigma Gamma Beta
    [16] =>  Beta
    [17] =>  Beta Alpha
    [18] =>  Beta Alpha Gamma
    [19] =>  Beta Alpha Gamma Sigma
    [20] =>  Beta Alpha Sigma
    [21] =>  Beta Alpha Sigma Gamma
    [22] =>  Beta Gamma
    [23] =>  Beta Gamma Alpha
    [24] =>  Beta Gamma Alpha Sigma
    [25] =>  Beta Gamma Sigma
    [26] =>  Beta Gamma Sigma Alpha
    [27] =>  Beta Sigma
    [28] =>  Beta Sigma Alpha
    [29] =>  Beta Sigma Alpha Gamma
    [30] =>  Beta Sigma Gamma
    [31] =>  Beta Sigma Gamma Alpha
    [32] =>  Gamma
    [33] =>  Gamma Alpha
    [34] =>  Gamma Alpha Beta
    [35] =>  Gamma Alpha Beta Sigma
    [36] =>  Gamma Alpha Sigma
    [37] =>  Gamma Alpha Sigma Beta
    [38] =>  Gamma Beta
    [39] =>  Gamma Beta Alpha
    [40] =>  Gamma Beta Alpha Sigma
    [41] =>  Gamma Beta Sigma
    [42] =>  Gamma Beta Sigma Alpha
    [43] =>  Gamma Sigma
    [44] =>  Gamma Sigma Alpha
    [45] =>  Gamma Sigma Alpha Beta
    [46] =>  Gamma Sigma Beta
    [47] =>  Gamma Sigma Beta Alpha
    [48] =>  Sigma
    [49] =>  Sigma Alpha
    [50] =>  Sigma Alpha Beta
    [51] =>  Sigma Alpha Beta Gamma
    [52] =>  Sigma Alpha Gamma
    [53] =>  Sigma Alpha Gamma Beta
    [54] =>  Sigma Beta
    [55] =>  Sigma Beta Alpha
    [56] =>  Sigma Beta Alpha Gamma
    [57] =>  Sigma Beta Gamma
    [58] =>  Sigma Beta Gamma Alpha
    [59] =>  Sigma Gamma
    [60] =>  Sigma Gamma Alpha
    [61] =>  Sigma Gamma Alpha Beta
    [62] =>  Sigma Gamma Beta
    [63] =>  Sigma Gamma Beta Alpha
)
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3