"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 posibles a partir de una matriz 1D en PHP, incluidas tanto combinaciones como permutaciones?

¿Cómo puedo generar todas las combinaciones posibles a partir de una matriz 1D en PHP, incluidas tanto combinaciones como permutaciones?

Publicado el 2024-11-18
Navegar:541

How can I generate all possible combinations from a 1D array in PHP, including both combinations and permutations?

Obtener todas las combinaciones posibles en PHP: una solución integral

Recuperar todas las combinaciones posibles de una matriz 1D puede ser una tarea compleja, especialmente cuando considerando tanto combinaciones como permutaciones. Si bien existen varios enfoques para este problema, una solución muy efectiva implica implementar una función recursiva.

La función recursiva, Depth_picker(), realiza una búsqueda en profundidad en la matriz, explorando todas las ramas y combinando elementos para formar combinaciones. Mantiene una cadena temporal que se modifica gradualmente con cada elemento, mientras que una matriz de recopilación almacena las combinaciones finales. Examinemos cómo funciona esta función:

  1. Caso base: Si la cadena temporal está vacía, significa que se está considerando un elemento independiente. En este caso, se agrega directamente a la matriz de recopilación.
  2. Exploración recursiva: cuando se va a combinar un elemento, la función crea una copia de la matriz original y elimina el elemento actual de ello. Luego llama recursivamente a Depth_picker() en la matriz modificada, pasando la cadena temporal actualizada con el elemento agregado. Si hay más elementos para combinar, continúa el proceso recursivo.
  3. Combinaciones y permutaciones: al iterar a través de cada elemento y combinarlos recursivamente, Depth_picker() genera efectivamente todas las combinaciones y permutaciones posibles. sin repetición. Este enfoque garantiza que ambas variaciones de cadenas ('Alpha Beta' y 'Beta Alpha') se incluyan en el resultado final.
  4. Resultado final: cuando la función ha explorado todas las combinaciones, la recopilación La matriz contiene el conjunto completo de todas las combinaciones posibles de la matriz de entrada.

Implementación y ejecución

Para implementar esta búsqueda y recuperación de combinaciones en profundidad, se puede emplear el siguiente código PHP:

 0) {
            depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }
    }
}

$collect = array();
depth_picker($array, "", $collect);
print_r($collect);

?>

Al ejecutarse, este código genera la siguiente matriz de todas las combinaciones y disposiciones posibles:

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
)

Este enfoque proporciona una solución integral y eficiente para obtener todas las combinaciones posibles de elementos en una matriz, asegurando que tanto las combinaciones como las diferentes disposiciones se incluyan en el resultado.

Ú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