Если у меня есть верхняя треугольная часть матрицы, смещенная над диагональю, хранящаяся в виде линейного массива, как можно выделить индексы (i,j)
матричного элемента из линейного индекса массива?
Например, линейный массив [a0, a1, a2, a3, a4, a5, a6, a7, a8, a9
является хранилищем для матрицы
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, j) в массиве, соответствующий смещению в линейной матрице, без рекурсии.
Подходящий результат, k2ij(int k, int n) -> (int, int)
удовлетворяет, например,
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]