Jeśli mam górną trójkątną część macierzy, przesunięcie powyżej przekątnej, przechowywane jako tablica liniowa, w jaki sposób można wyliczyć indeksy elementu matrycowego z liniowego indeksu macierzy?Macierz górna trójkątna o indeksie liniowym
Na przykład tablica liniowa [a0, a1, a2, a3, a4, a5, a6, a7, a8, a9
jest do przechowywania matrycy
0 a0 a1 a2 a3 0 0 a4 a5 a6 0 0 0 a7 a8 0 0 0 0 a9 0 0 0 0 0
I chcemy poznać (i, j) indeks w tablicy odpowiada przesunięcie w matrycy liniowej, bez rekursji.
Odpowiedni wynik, k2ij(int k, int n) -> (int, int)
spełniałoby np
k2ij(k=0, n=5) = (0, 1) k2ij(k=1, n=5) = (0, 2) k2ij(k=2, n=5) = (0, 3) k2ij(k=3, n=5) = (0, 4) k2ij(k=4, n=5) = (1, 2) k2ij(k=5, n=5) = (1, 3) [etc]
Napisz fomulę dla elementów w ostatniej kolumnie. Aby to ułatwić, wypisz formułę, która oblicza indeks liniowy z numeru wiersza (numer kolumny jest stały), a następnie odwróć go. Przejdź do ogólnej formuły. –
Należy zauważyć, że przedstawione tutaj metody rozwiązania mogą być również używane do wylistowania kombinacji N rzeczy wziętych po 2 na raz (bez powtórzeń), bez potrzeby jakiejkolwiek iteracji/rekurencji. –