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

Wariacje + tablica

Ostatnio zmodyfikowano 2013-11-29 21:01
Autor Wiadomość
mgrD
Temat założony przez niniejszego użytkownika
Wariacje + tablica
» 2013-11-28 17:10:56
Witam, usiłuje napisać program, który wczyta mi kombinacje z powtórzeniami z tablicy(musi być tablica) w tablicy mam "ABab12" i chciałbym, by wypisało wszystkie kombinacje 3 znakowe. Wzór do tego to podobno będzie 3^6 = 729 tylko nie mogę tego ogarnąć zbytnio, próbowałem już kilka razy i dalej stoję ;/
C/C++
#include <iostream>
#include <string>
#include "Windows.h"
#include <ctime>


std::string text[ 729 ]; //3^6 = 729
char tablica[] = "ABab12";
void los();




int main()
{
    srand( time( NULL ) );
    std::cout << "No to zaczynamy!\n";
    los();
    return 0;
}

void los()
{
    int powtorka = 0, ilosc = 0;
   
    while( powtorka == 0 )
    {
        ilosc = 0;
        while( ilosc <( sizeof( tablica ) - 1 ) )
        {
            text[ ilosc ] = tablica[ rand() %( sizeof( tablica ) - 1 ) ];
            ilosc++;
           
            for( int t = 0; t < ilosc; t++ )
            {
                if( text[ t ] == text[ ilosc ] ) text[ ilosc ] = tablica[ rand() %( sizeof( tablica ) - 1 ) ];
               
            }
        }
    }
}

I dalej nie wiem co i jak bo już mi się zbyt dużo namieszało niestety - czy ktoś pomoże?
P-97756
bnk120
» 2013-11-29 09:17:16
Nie lepiej byłoby Ci przygotować 3 pętle for i działać tylko na indeksach tej Twojej char tablica ? W odpowiedniej pętli dodawać rozwiązania do tej tablicy text ( jeżeli koniecznie wyniki mają być w tablicy ) i tyle.
P-97828
Wiesiek
» 2013-11-29 12:44:25
3^6 to wariacje z powtórzeniami. Wariacji bez powtórzeń jest 6!/3!, kombinacji bez powtórzeń 6!/(3!*3!), kombinacji z powtórzeniami 8!/3!. Do tworzenia kombinacji z powtórzeniami można skorzystać z kombinacji bez powtórzeń. Kombinacje bez powtórzeń przy szukaniu 3 elementowego podzbioru zbioru 8 elementowego o elementach indeksowanych od 0 do 7 robimy przez potrójną pętlę - w pierwszej indeks i1 od 0 do 5, w drugiej indeks i2 od i1 do 6, w trzeciej indeks i3 od i2 do 7.
P-97834
mgrD
Temat założony przez niniejszego użytkownika
» 2013-11-29 16:33:12
Hmmm ->
kombinacji z powtórzeniami 8!/3!

Czyli to nie to samo co wariacje z powtórzeniami? (wariacje z powtórzeniami != kombinacje z powtórzeniami)?
P-97845
ShayQ
» 2013-11-29 21:01:31
Myślałem żeby edytować Twój kod ale jednak nie, bo męczę się z podobną rzeczą tylko ja muszę zliczać sumę permutacji i w trakcie wywołania rekurencji omija niektóre pola do zliczania ^^

Tutaj masz link gdzie (prawdopodobnie) opisane jest to czego potrzebujesz :)
http://www.codeguru.com/cpp/cpp/algorithms/article.php/c5123/Permutations-in-C.htm
P-97873
« 1 »
  Strona 1 z 1