Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kombinacje danego ciągu liczb
maciek_3000
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.08.2006

Ostrzeżenie: (0%)
-----


Witam!
Chciałbym poznać Wasze pomysły na rozwiązanie takiego zagadnienia:

mamy jakąś stałą typu integer > 0 i algorytm ma wyświetlić (ew. dodać do zmiennej) tablicę wszystkich możliwych rozmieszczeń liczb w szeregu, z tym, że liczby są 1 <= x <= stała i nie mogą się powtarzać.

Np. dla stałej 3 są to:
123
312
213
231
132
321


Mam wiele koncepcji na stworzenie tego algorytmu, np. operowanie na innym powiedzmy "systemie liczb", x/stała, czy wielokrotne powtarzanie tablicy, zakładając, że kombinacji jest mniej niż stała^2 i sprawdzając, czy się nic nie powtarza.

Może ktoś z Was rozwiązywał podobne zadanie.

Maciek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
wipo
post
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


Kod


$liczba="123";
$kombinacje=array($liczba);
$liczby=array();
for($x=0;$x<strlen($liczba);$x++) array_push($liczby,$liczba[$x]);

for($x=0;$x<count($liczby);$x++){
    for($y=0;$y<count($liczby);$y++){
    if ($x!=$y){
        $temp=$liczby;
        $a=$temp[$x];
        $temp[$x]=$temp[$y];
        $temp[$y]=$a;
        $liczba2=implode("",$temp);
        if (!in_array($liczba2,$kombinacje)) array_push($kombinacje,$liczba2);
    }
    }
}

print_r($kombinacje);


--------------------
Go to the top of the page
+Quote Post
dtb
post
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function kombinacje($arr, &$kombinacje, $next='') {
  3.  if (strlen($next) == count($arr)) {
  4. $kombinacje[] = $next;
  5.  } else {
  6. $n2 = str_split($next);
  7. foreach ($arr as $a) {
  8.  if (!in_array($a, $n2)) {
  9. kombinacje($arr, $kombinacje, $next.$a);
  10.  }
  11. }
  12.  }
  13. }
  14.  
  15.  
  16. kombinacje(array(1,2,3), $kombinacje);
  17. print_r($kombinacje);
  18. ?>


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:22