[Pascal]Wypisywanie kolejnych wartości w tabeli

Witam

Mam jednowymiarową tabelę indeksowaną od 1 do 5. Jest wyzerowana. Chodzi o to żeby w jakiejś pętli czy coś zmieniały się w niej kolejne wartości od zero do 9:

0 0 0 0 0

0 0 0 0 1

0 0 0 0 2

0 0 0 0 9

0 0 0 1 0

0 0 0 1 1

9 9 9 9 8

9 9 9 9 9

Chodzi o to żeby zostały wybrane wszystkie kombinację bo każdą muszę sprawdzić osobno.

Proszę pomóżcie

No ale z czym masz problem?

Masz tu kod w Pseudo-C-Pascalu (sorry, nie chciało mi się przypominać sobie składni Pascala)

for i = 0 to 99999

{

     t[5] = i mod 10

     t[4] = (i div 10) mod 10

     t[3] = (i div 100) mod 10

     t[2] = (i div 1000) mod 10

     t[1] = (i div 10000) mod 10


     ...


}

Wow. Że też komuś się chciało pisać o tej godzinie. Rozwiązanie było banalne tylko ja o tej godzinie już nie myślę. Jednak okazało się że nie o to chodziło. Mimo wszystko dzięki.

Teraz opiszę mój nowy problem teraz już trudniejszy :stuck_out_tongue:

Otóż tak te wartości w tablicach to są ciągi wierzchołków grafu(jak to strasznie brzmi :smiley: ). Dla każdego ciągu sprawdzić czy można generować graf i jeśli można to go wygenerować to to zrobić i zapamiętać ile można wygenerować grafów z danego ciągu( należy pamiętać że ciąg

3 3 2 2 1

3 2 1 3 2

1 2 3 2 3 to te same ciągi). I mam do tego program niestety ma on tę wadę że generuje tylko jeden graf w zależności w jakiej wpiszemy ciąg, nawet jeśli można więcej grafów wygenerować on zrobi tylko jeden.

Dlatego chciałem sobie generować wszystkie ciągi i wtedy bym wygenerował wszystkie grafy jednak nie mógł bym zliczyć który ciąg ile ma grafów. Myślałem też o generowaniu ciągu i podczas losowania następnych sprawdzać żeby się nie powtarzały, a grafy generować na jednym ciągu który będzie się znajdował w tablicy mieszającej. Jest to w miarę dobre rozwiązanie jednak tylko dla małych ciągów, bo dla dużych nie wszystkie ciągi mogą się powtórzyć.

Dlatego uważam że najlepszym rozwiązaniem jest zmodyfikowanie mojego programu tak aby na podstawie jednego ciągu generował wszystkie grafy. Chyba że ktoś ma inną propozycję to chętnie przeczytam.

http://pastebin.4programmers.net/179554

W takim razie bierz tylko te ciągi które są niemalejące, dzięki temu nie weźmiesz dwóch równoważnych.

Ile różnych ciągów równoważnych reprezentuje dany ciąg będziesz wiedział ze wzoru na liczbę permutacji z powtórzeniami, czyli

5! / (k_1! k_2! …), gdzie k_i oznacza ile razy w ciągu powtarza się ta sama liczba, np. dla twojego ciągu jest 5! /(2!2!) ciągów równoważnych.