• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kombinatoryka

Object Storage Arubacloud
0 głosów
356 wizyt
pytanie zadane 6 listopada 2016 w C i C++ przez Przemek Gaduła (3,600 p.)
Witam,

Jeśli np. dla zbioru {1, 2, 3} chce uzyskać coś takiego:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

1 2

1 3

2 1

2 3

3 1

3 2

1

2

3

To to jest jakaś permutacja/wariacja? Jak uzyskać coś takiego?
komentarz 6 listopada 2016 przez plkpiotr Stary wyjadacz (12,420 p.)

Wariacje bez powtórzeń 3 elementów ze zbioru 3 elementowego {1,2,3}:

(1 2 3), (1 3 2), (2 1 3), (2 3 1), (3 1 2), (3 2 1)

Wariacje bez powtórzeń 2 elementów ze zbioru 3 elementowego {1,2,3}:

(1 2), (1 3), (2 1), (2 3), (3 1), (3 2)

Wariacje bez powtórzeń 1 elementu ze zbioru 3 elementowego {1,2,3}:

(1), (2), (3)

Wariacje bez powtórzeń, czyli kolejność istotna... Na liczbę takich wariancji bez powtórzeń jest wzór n!/(n-k)! Gdzie n to ilość elementu zbioru, a k ile elementów z tego zbioru wybieramy.

3 odpowiedzi

0 głosów
odpowiedź 6 listopada 2016 przez Aleksander Januszews Gaduła (3,790 p.)
edycja 6 listopada 2016 przez Aleksander Januszews

Są to poszczególne wariacje bez powtórzeń:

- dla całego zbioru (3 liczb) { 1 2 3 ,1 3 2, 2 1 3, 2 3 1, 3 1 2, 3 2 1}

- dla dwóch liczb ze zbioru {1 2, 1 3, 2 1, 2 3 , 3 1 , 3 2}

- dla jednej liczby ze zbioru {1 , 2 , 3}

 

Uzyskać możesz poprzez utworzenie pętli (przykład dla 2 liczb(wyrazów) ze zbioru ):

for(int j = 0 ; j < N ; j++)
   for(int i = 0 ; i < N ; i++)
            if (tab[j] != tab[i])
                  cout<<tab[j]<< " " << tab[i] << endl;

Z im więcej liczb (wyrazów) chcesz wariacje tym więcej pętli ( np. 2 wyrazy z N to dwie pętle, 3 wyrazy z N to trzy pętle itd)

0 głosów
odpowiedź 6 listopada 2016 przez Adam Olesiak Gaduła (3,290 p.)
W sensie chcesz wyznaczyć to ile tych elementów będzie? Jeśli tak, to proste:

Najpierw 3 elementy ze zbioru 3 elementowego, potem 2 elementy ze zbioru 3 elementowego, potem 1 element ze zbioru 3 elementowego

Zapisujemy za pomocą dwumianu newtona.

(3 1) + (3 2) + (3 3) = 3 + 6+ 9 = 18.

Jak chcesz uzyskać te wyrazy, a nie ich liczbę, to dla małych zbiorów możesz to zrobić w głowie, dla większych na papierze, a dla naprawdę dużych możesz napisać program, który będzie je wyznaczał. Jak będziesz go pisał, to możesz dodać opcję, aby szukał z powtórzeniami lub bez nich.
0 głosów
odpowiedź 6 listopada 2016 przez morele123 Gaduła (4,790 p.)
Nie, ale spójrz na to w ten sposób: na początku masz tyle miejsc ile jest elementów, robisz dla nich kombinacje bez powtórzeń, następnie twoje miejsce pomniejsza się o 1, jednak twój zbiór się nie zmienia, więc robisz to samo ale dla 2 miejsc i tak aż do 1.

Czylli masz: dla 3 elementowego zbioru: 3*2*1+3*2 + 3

Podobne pytania

–1 głos
0 odpowiedzi 157 wizyt
pytanie zadane 28 kwietnia 2020 w Matematyka, fizyka, logika przez tomek.99 Początkujący (370 p.)
0 głosów
3 odpowiedzi 347 wizyt
pytanie zadane 13 czerwca 2019 w HTML i CSS przez Moziu Początkujący (390 p.)
0 głosów
4 odpowiedzi 3,096 wizyt
pytanie zadane 24 października 2017 w Matematyka, fizyka, logika przez qlucha Obywatel (1,790 p.)

92,626 zapytań

141,483 odpowiedzi

319,834 komentarzy

62,006 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...