Se si dispone della porzione triangolare superiore di una matrice, spostata sopra la diagonale, memorizzata come matrice lineare, come si possono estrarre gli indici di un elemento di matrice dall'indice lineare dell'array?Matrice triangolare superiore dell'indice lineare
Ad esempio, l'array lineare [a0, a1, a2, a3, a4, a5, a6, a7, a8, a9
è immagazzinaggio per la matrice
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
e vogliamo conoscere il (i, j) Indice nella matrice corrispondente ad un offset nella matrice lineare senza ricorsione.
Un risultato adatto, k2ij(int k, int n) -> (int, int)
sarebbe soddisfare, ad esempio
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]
Scrivere un fomula per gli elementi nell'ultima colonna. Per rendere più semplice scrivere una formula che calcoli l'indice lineare da un numero di riga (il numero della colonna è fisso), quindi invertirlo. Procedere a una formula generale da lì. –
Si noti che i metodi di soluzione presentati qui possono anche essere usati per elencare le combinazioni di N cose prese 2 alla volta (senza ripetizione), senza la necessità di alcuna iterazione/ricorsione. –