Это обратная матрица или симметричная матрица?Я считаю, что то, что вы показали, является симметричной матрицей.
Матрица обратная определяется как:
если A*B = I
, то B
обратно A
, где I
- единичная матрица.
Допустим, вы создалиСимметричная матрица, свойство такой матрицы:
для каждого (i,j) -> A(i,j) == A(j,i)
Теперь, когда вы представляете свою матрицу как одномерный массив, элемент с индексом k
может быть преобразован вего соответствующее (i,j)
местоположение как:
i = k / C
j = k % C
, где C
- количество столбцов
, а также местоположение(i, j)
можно преобразовать в соответствующее одномерное местоположение следующим образом:
k = i*R + j
, где R
- количество строк.
Теперь для получения симметричногозначение (i,j)
задано k
, сначала преобразуйте k
в (i,j)
, а затем преобразуйте (j,i)
в новое значение k
newK = j*R + i
, например, дляk = 1
соответствует (i,j) = ( 1 / 4, 1 % 4) = (0, 1)
и newK = 1*4 + 0 = 4
для k = 6
соответствует (i,j) = ( 6 / 4, 6 % 4) = (1, 2)
и newK = 2*4 + 1 = 9
для k = 15
кор(i,j) = ( 15 / 4, 15 % 4) = (3, 3)
и newK = 3*4 + 3 = 15
для k = 5
, соответствующих (i,j) = ( 5 / 4, 5 % 4) = (1, 1)
и newK = 1*4 + 1 = 5
Все, что падает по диагонали, будетбыть собой.