To jest matematyka, ale lepiej sobie zerknij jak przebiega "zmienność" pól mając wybranych 8 lub 10 drużyn, a potem z 7 lub 9

Zauważysz pewien algorytm tworzenia zestawień. Zmieniają się one w określony sposób. Gdy już złapiesz jak się to zmienia sprawdź dla większych wartości liczby drużyn. Poza tym zwróć uwagę na fakt, że tak naprawdę potrzebujesz tylko połowę spotkań. Reszta to odbicie lustrzane, gdzie gość zamienia się z gospodarzem. Dla n drużyn więc potrzebujesz tak naprawdę (n-1) spotkań dla parzystej liczby drużyn i (n) dla nieparzystej bo wynika to z pauzowania za każdym razem jednej drużyny w kolejce. Zwróć szczególną uwagę na to jak zmieniają się drużyny co 2 kolejki to zauważysz pewne inkrementacje. Jeśli nie wiesz o co mi chodzi to zamiast nazw wprowadź liczby począwszy od 1 wzwyż po kolei i popatrz jak zmieniają się liczby w kolejkach 1,3,5,7 oraz 2,4,6,8 to załapiesz o co mi chodzi

Tak naprawdę tworzenie tego terminarza to... obliczenie pewnej określonej JEDNEJ liczby i potem skakanie z nią po wszystkich indeksach tablicy oprócz ostatniego w przypadku parzystej liczby drużyn dla parzystej liczby drużyn. U nieparzystej z pozoru wygląda inaczej, ale to nieco mylne wrażenie z racji tej błądzącej drużyny pauzującej

EDIT: I źle widzisz. Drużyna 1 gra po 2 razy z każdą drużyną. Raz jako gospodarz i raz jako gość. Bo tak to jest w rzeczywistości. Każdy z każdym po dwa razy. Mając więc X drużyn każda zagra (X-1) * 2 meczy bo nie może grać sama z sobą. Dla nieparzystych jest tej "problem", że jedna pauzuje, więc ona musi mieć dodatkowy mecz, tak jakby drużyn było nie X, ale X+1

Naprawdę popatrz _Martin_ na to JAK się zmieniają dane w ich algorytmie, a załapiesz jak można generować te spotkania. To w dużej mierze lecenie po tablicy o ceil(n/2) pozycji

Sam sobie to sprawdź na spokojnie.