sto lavorando con una matrice triangolare MxM, che ha la seguente forma:Ottenere la riga e colonna di una matrice triangolare, in base all'indice
M = [m00 m10 m20 m30 m40]
[m11 m21 m31 m41 ]
[m22 m32 m42 ]
[m33 m43 ]
[m44 ]
Se è più facile immaginare questo in termini di indici, sarebbe simile a questa:
M = [0 1 3 6 10]
[2 4 7 11 ]
[5 8 12 ]
[9 13 ]
[14 ]
so che questo modo di indicizzazione potrebbe apparire strano ma sarebbe molto più facile se potessi mantenere il sistema di indicizzazione in quanto è in ordine per questo modulo per lavorare bene con gli altri.
Sono in difficoltà con un algoritmo che prende un indice e una dimensione della matrice che può restituire la riga e la colonna in cui cade l'indice indicato. Idealmente avrei 2 funzioni come queste:
int getRow (int index, int size);
int getCol (int index, int size);
Così getRow (7, 5)
sarebbero tornati 3
E getCol (7, 5)
sarebbe tornato 1
Mi sono imbattuto in questa discussione già, ma io non riesco a modificare la soluzione dato lì per lavorare per il modo in cui sto indicizzando.
algorithm for index numbers of triangular matrix coefficients
Sì, hai ragione, farò una modifica. Anche con questo, tuttavia, non riesco ancora a rielaborare l'algoritmo fornito nell'altro argomento per adattarlo al modo in cui sto indicizzando. – Redek
perché getRow (7, 5) restituisce 3? –
Perché il modo in cui sto indicizzando, le righe sono le diagonali (non le orizzontali) quindi la riga 3 è 'm30, m31, m32, m33' – Redek