Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Wariacja - liczby wkładane do pudełek

Ostatnio zmodyfikowano 2014-12-29 20:33
Autor Wiadomość
ziombel3
Temat założony przez niniejszego użytkownika
[C++] Wariacja - liczby wkładane do pudełek
» 2014-12-23 16:09:19
Witam. Mam problem z napisaniem programu który ma rozwiązać dany problem:
Mamy k pudełek oraz n liczb. Należy wygenerować wszystkie możliwe kombinacje przydziału liczb do pudełek. Wszystkie liczby mają być przydzielone do jakiegoś pudełka. Inaczej formułując problem można powiedzieć, że dla każdej liczby przydzielamy pudełko. Jest k^n możliwości.
Umiem wygenerować jedną wariancję dla k pudełek lub wszystkie wariacje dla jednego pudełka. Jak zrobić to z n pudełkami? Jak będzie wyglądał taki program?
Dla k=2 i liczb 1,2,3 mamy:

1,2,3   1,2    1                3      1,2
        3      2,3    1,2,3     1,2    3

Wiem, że mógłbym robić losową wariancję i jeśli jest unikalna to dodać ją do tablicy, która miała by wielkość k^n. Ale takie rozwiązanie oznaczało by olbrzymie obciążenie i to nie wchodzi w grę.
P-123276
DejaVu
» 2014-12-29 20:33:05
C/C++
std::vector < int > pudelka;
pudelka.reserve( k );
for( size_t i = 0; i < k; ++i )
     pudelka.push_back( liczby[ i ] );

Potem wymieniaj liczby w ostatnim pudełku aż do wyczerpania wszystkich pozostałych liczb. Jak się wyczerpią wszystkie opcje na ostatnim pudełku to zmodyfikuj zawartość przedostatniego pudełka i znowu powtórz wszystkie możliwe liczby jakie można wpakować do pudełka ostatniego. Potem to zapętlasz i dostajesz wszystkie wyniki.
P-123604
« 1 »
  Strona 1 z 1