Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]kombinacja bez powtórzeń
Forum PHP.pl > Forum > Przedszkole
citek10
Cześć.

Mam duży problem.
Chciałbym wypisać (utworzyć) 2-elementowe kombinacje zbioru 18-elementowego i przypisac je do odpowiednich podzbiorów, w których bedzie 9 dwuelementowych kombinacji.

Przykład:
Mam zbiór {1,2,3,4,...,16,17,18}.
Na podstawie elementów ze zbioru, tworzę 9 dwuelementowych kombinacji ,
np:
- {(1,18), (2,17), (3,16),(4,15),(5,14),(6,13),(7,12),(8,11),(9,10)}
lub
- {(17,18), (1,16), (2,15),(3,14),(4,13),(5,12),(6,11),(7,10),(8,9)}


Problem polega na tym ze nie potrafię zaimplementować takiego rozwiazania aby algorytm utworzył mi 17 takich podzbiorów.

W podzbiorach tych mamy pary liczb, zadna z tych par nie moze wystepowac w innym podzbiorze.
Kolejność liczb w parze liczb nie ma znaczenia.
Każda liczba moze wystepowac raz w podzbiorze.

Może macie jakiś pomysł jak to rozwiązać.
Z góry dziekuję.
zeten
  1. <?php
  2. for($i = 1; $i<=18; $i++) { // tworzymy wszystkie możliwe kombinacje.
  3.   for ($n = $i; $n<=18; $n++) {
  4.       if ($i != $n ) {
  5.          $kombinacja[] = "($i,$n)";
  6.       }
  7.   }
  8. }
  9.  
  10. $n = 0;
  11.  
  12. for ($l = 1; $l<=17; $l++) {
  13.   for ($i = 1; $i<=9; $i++) { // dzielimy kombinacje na zbiory 9 elementowe.
  14.       $tablica .= " $kombinacja[$n]";
  15.       $n++;
  16.   }
  17.   $wynik[] = $tablica;
  18.   $tablica = '';
  19. }
  20.  
  21. print_r($wynik);
  22. ?>


[0] => (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9) (1,10)
[1] => (1,11) (1,12) (1,13) (1,14) (1,15) (1,16) (1,17) (1,18) (2,3)
[2] => (2,4) (2,5) (2,6) (2,7) (2,8) (2,9) (2,10) (2,11) (2,12)
[3] => (2,13) (2,14) (2,15) (2,16) (2,17) (2,18) (3,4) (3,5) (3,6)
[4] => (3,7) (3,8) (3,9) (3,10) (3,11) (3,12) (3,13) (3,14) (3,15)
[5] => (3,16) (3,17) (3,18) (4,5) (4,6) (4,7) (4,8) (4,9) (4,10)
[6] => (4,11) (4,12) (4,13) (4,14) (4,15) (4,16) (4,17) (4,18) (5,6)
[7] => (5,7) (5,8) (5,9) (5,10) (5,11) (5,12) (5,13) (5,14) (5,15)
[8] => (5,16) (5,17) (5,18) (6,7) (6,8) (6,9) (6,10) (6,11) (6,12)
[9] => (6,13) (6,14) (6,15) (6,16) (6,17) (6,18) (7,8) (7,9) (7,10)
[10] => (7,11) (7,12) (7,13) (7,14) (7,15) (7,16) (7,17) (7,18) (8,9)
[11] => (8,10) (8,11) (8,12) (8,13) (8,14) (8,15) (8,16) (8,17) (8,18)
[12] => (9,10) (9,11) (9,12) (9,13) (9,14) (9,15) (9,16) (9,17) (9,18)
[13] => (10,11) (10,12) (10,13) (10,14) (10,15) (10,16) (10,17) (10,18) (11,12)
[14] => (11,13) (11,14) (11,15) (11,16) (11,17) (11,18) (12,13) (12,14) (12,15)
[15] => (12,16) (12,17) (12,18) (13,14) (13,15) (13,16) (13,17) (13,18) (14,15)
[16] => (14,16) (14,17) (14,18) (15,16) (15,17) (15,18) (16,17) (16,18) (17,18)


Pewnie da się krócej napisać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.