"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso gerar todas as combinações exclusivas de 5 números de uma matriz de 7 números (1, 2, 3, 4, 5, 6, 7) usando o PHP?

Como posso gerar todas as combinações exclusivas de 5 números de uma matriz de 7 números (1, 2, 3, 4, 5, 6, 7) usando o PHP?

Postado em 2025-03-25
Navegar:158

How can I generate all unique combinations of 5 numbers from an array of 7 numbers (1, 2, 3, 4, 5, 6, 7) using PHP?

PHP Array Combinations

Você recebe uma matriz de 7 números (1,2,4,5,6,7). O objetivo é encontrar todas as combinações possíveis de 5 números dessa matriz. Cada combinação deve ser única, o que significa que nenhuma duplicata é permitida. Por exemplo, (1,2,3,4,5) e (5,4,3,2,1) são considerados a mesma combinação. Veja como funciona:

classe Combinações implementa o iterador { $ c = nulo; // combinação de números $ s = nulo; // Matriz de origem $ n = 0 protegido; // número de elementos na matriz $ k = 0; // número de elementos em cada combinação $ pos POS = 0; // posição atual do iterador função __construct ($ s, $ k) { // Inicialize as propriedades da classe if (is_array ($ s)) { $ this-> s = Array_values ​​($ s); $ this-> n = count ($ this-> s); } outro { $ this-> s = (string) $ s; $ this-> n = strlen ($ this-> s); } $ this-> k = $ k; $ this-> rewind (); } // retorna a chave atual função key () { retornar $ this-> pos; } // retorna o valor atual função atualmente () { $ r = array (); para ($ i = 0; $ i k; $ i) $ r [] = $ this-> s [$ this-> c [$ i]]; retornar is_array ($ this-> s)? $ R: Implode ('', $ R); } // mova -se para a próxima combinação função a seguir () { if ($ this-> _ Next ()) $ this-> pos; outro $ this-> pos = -1; } // rebobinar para a primeira combinação função rewind () { $ this-> c = intervalo (0, $ this-> k); $ this-> pos = 0; } // Verifique se o iterador é válido (em uma posição válida) função válida () { retornar $ this-> pos> = 0; } // mova -se para a próxima combinação (função interna) função protegida _next () { $ i = $ this-> k - 1; while ($ i> = 0 & amp; & amp; $ this-> c [$ i] == $ this-> n-$ this-> k $ i) $ i--; se ($ i c [$ i]; while ($ i k - 1) $ this-> c [$ i] = $ this-> c [$ i-1] 1; retornar true; } } // Crie um objeto de combinações para a matriz dada e número de elementos por combinação $ combinações = novas combinações ("1234567", 5); // itera sobre todas as combinações possíveis e impede -as foreach ($ combinações como $ substring) echo $substring, ' ';This code produces the following output:

12345 12346 12347 12356 12357 12367 12456 12457 12467 12567 13456 13457 13467 13567 14567 23456 23457 23467 23567 24567 34567

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3