Skocz do zawartości

Zablokowane X Przedmiotów, ile możliwości połączenia?


Rekomendowane odpowiedzi

Opublikowano

Mam problem, otóż załóżmy że mam ileś przedmiotów. Ta liczba to X. Jak zrobić, aby program wyliczał na ile możliwości mogę połączyć te rzeczy, których jest X? Na przykład X=3, czyli mam sobie np. x1 = A, x2 = B, a x3 = C i teraz, mogę to tak połączyć:

 

ABC

AB

AC

BC

 

To są wszystkie możliwe połączenia dla X = 3, a jeśli X=5, to? Albo X = 98126? Jak to wyliczyć?

Opublikowano
#include <iostream>
#include <conio.h>

int main(void)
{
    int x;
    int ilosc = 0;
    std::cin >> x;
    int * t = new int[x];
    for(int n = 0; n < x; n++)
        t[n] = n;
    for(int i = 0; i < x; i++)
        for(int j = i+1; j < x; j++)
        {
            ilosc++;
            std::cout << t[i] << " i " << t[j] << std::endl;
        }
    std::cout << "Ilosc kombinacji: " << ilosc;
    delete [] t;
    getch();
    return 0;
}

Opublikowano

Kombinatoryka się kłania.

Możliwych kombinacji jest 2^X. Bo każdy przedmiot możesz wziąć, albo nie wziąć do zbioru.

 

EDIT:

A Pan wyżej coś nie bardzo, bo z tego co widzę to tylko bierze kombinacje dwuelementowe.

Opublikowano

^ = do potęgi?

W takim razie: 2^3 = 8, a nie 4 jak powinno wyjść :P

mannor -> Tyle że to liczy tylko kombinacje 2 połączeń ;/ Na razie idę do szkoły jeszcze, wrócę to coś pokminie, jak ktoś odpisze to ofc zobaczę :)

Opublikowano

Tak to jest do potęgi. Bo to ci jeszcze liczy możliwości wzięcia 1 elementu oraz żadnego czyli dodatkowe 4 kombinacje.

Jak chcesz takie pominąć to po prostu od wyniku odejmij X+1.

 

EDIT:

No i oczywiście nie zapominaj, że wystarczy X>64, a wynik już ci przekroczy zakres unsigned long longa. Będziesz potrzebował napisać własną arytmetykę.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...