[C++] Permutacje

aGabi94
Użytkownik
Użytkownik
Posty: 230
Rejestracja: 5 mar 2014, o 18:52
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 60 razy

[C++] Permutacje

Post autor: aGabi94 »

Do programu o permutacjach mam dopisać funkcje sprawdzającą czy podane przeze mnie liczby mogą tworzyć permutacje dla podanego \(\displaystyle{ n}\), która zwraca \(\displaystyle{ 1}\) lub \(\displaystyle{ 0}\). Nie będzie to możliwe gdy któreś elementy permutacji będą się powtarzać lub podamy liczbę większą od \(\displaystyle{ n}\).
Wymyśliłam coś takiego,proszę o poprawę i pomoc.

Kod: Zaznacz cały

int permutacja::czypermutacja()
{if(a[i]>n)   //a[i] - tablica przechowująca elementy permutacji
{return 0;
else
return 1;
}
else
{int licznik[n];  //tablica przechowująca ilość wystąpień danej liczby
for(i=1;i<=n;i++)
licznik[a[i]] ++;
for(i=1;i<=n;i++)
if(licznik[i]!=1)
return 0;
else 
return 1;
}
}
Ostatnio zmieniony 25 sty 2015, o 15:14 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
lemoid
Użytkownik
Użytkownik
Posty: 199
Rejestracja: 24 maja 2012, o 23:36
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 5 razy
Pomógł: 30 razy

[C++] Permutacje

Post autor: lemoid »

Nie za bardzo rozumiem o co chodzi w Twoim kodzie (formatowanie jest okropne - skąd się bierzę zmienna i w drugiej linijce? etc.) - jako pseudokod to jeszcze ujdzie - raczej nie jest to C++.

Pomysł masz mniej więcej dobry - zliczać wystąpienia i if jeżeli większy od n.
Tablice w c++ indeksuje się od zera - jak w większości języków programowania (z wyjątkami jak matlab).

Kod: Zaznacz cały

int tab[5]; // jest to tablica zawierająca tab[0],tab[1],tab[2],tab[3],tab[4] - wywołanie tab[5] wyrzuci błąd. Byłoby to odniesienie do 6 elementu - a tablica jest 5-elementowa. 
Ładniej byłoby posortować taką tablicę chociażby za pomocą std::sort. Wtedy nie trzeba byłoby zliczać wystąpień.
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C++] Permutacje

Post autor: Vardamir »

Ładniej jest przechodzić przez tablicę, to jest kod na max 5 linijek. Sortowanie jest tu zbędne i psuje złożoność.

Tak jak zauważył przedmówca: sformatuj kod. To na pewno pomoże.
ODPOWIEDZ