Cześć, natrafiłem na taki problem. Napisałem program generujący wszystkie permutacje zbioru n-elementowego. Użyłem tam zwykłej tablicy intów. Teraz chciałbym "odzwierciedlić" ten algorytm na listę obiektów. Przeszukałem kawał internetu ale nie wiem jak się do tego zabrać...
Oto prosty algorytm.
void permutacja_(int k, int n, int tab[])
{
if(k==0)
{
for(int i=0; i<n; i++)
{
cout << tab[i] << " ";
}
cout << endl;
}
else{
//cout << k << endl;
for(int i=0; i<k+1; i++)
{
swap(tab[i],tab[k]);
permutacja_(k-1, n, tab);
swap(tab[i],tab[k]);
}
}
}
A oto moja próba napisania tego dla listy obiektów, gdzie każdy z nich posiada 4 pola. Chciałbym uzyskać efekt permutacji czyli dla 2 obiektów, n=2, przykładowo
4 0 0 1
5 0 1 7
wszystkie możliwe kombinacje, czyli:
4 0 0 1
5 0 1 7
5 0 1 7
4 0 0 1
void permutacja_(int n, int k, list<Item> Lst2)
{
if(k==0)
{
for(list<Item>::iterator i=Lst2.begin();i!=Lst2.end();++i)
{
cout<<i->Time()<< " " <<i->Dist()<< " " <<i->Index()<< " " <<i->Deadline()<<endl;
}
cout << endl << endl;
}
else
{
for(fuuuuuu)
{
}
}
}
Chodzi mi tutaj w sumie o wygodne indeksowanie elementów listy. Na wikibooks wyczytałem, że dostęp tylko poprzez iteratory, natomiast w wektorze możliwy jest również przez indeksy. Czy ta struktura danych (vector) sprawdziłaby się tutaj lepiej? Chodzi mi, aby program był napisany jak najprościej ;p