Как я могу найти индекс отраженного значения в диагонали? - PullRequest
0 голосов
/ 01 апреля 2019

Я создал обратную матрицу в одномерном массиве, и я хочу узнать, как получить индекс отражающего значения в диагонали.

Например: Допустим, я нашел значение (значение: 1) и также знаю индекс этого значения (индекс: 1). Как я могу найти 2-й индекс этого значения? Предположим, что значения в этой обратной матрице могут повторяться.

const matrix: number[] = [0, 1, 2, 3, 1, 0, 4, 5, 2, 4, 0, 6, 3, 5, 6, 0];

enter image description here

1 Ответ

2 голосов
/ 01 апреля 2019

Это обратная матрица или симметричная матрица?Я считаю, что то, что вы показали, является симметричной матрицей.

Матрица обратная определяется как:

если 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

Все, что падает по диагонали, будетбыть собой.

...