pensare in questo modo:
Hai un array che sembra essere una matrice tridimensionale 1, che in realtà, è solo una lunga concatenazione di elementi di una matrice bidimensionale.
Quindi, supponiamo di disporre di una matrice bidimensionale di dimensioni 5 x 3 (5 righe, 3 colonne). E vogliamo creare un array monodimensionale. Devi decidere se vuoi concatenare per righe o per colonne, per questo esempio diremo che la concatenazione è per righe. Pertanto, ogni riga è lunga 3 colonne, quindi è necessario pensare alla matrice monodimensionale come definita nei "passaggi" di 3. Quindi, la lunghezza della matrice monodimensionale sarà 5 x 3 = 15, e ora tu bisogno di trovare i punti di accesso.
Quindi, diciamo che stai accedendo alla 2a riga e alla 2a colonna della tua matrice bidimensionale, quindi finirebbe con 3 passi (prima riga) + il numero di passi nella seconda riga, o 3 + 2 = 5. poiché siamo base zero indicizzazione che è -1, in modo che sarebbe all'indice 4.
Ora per la formulazione specifica:
int oneDindex = (row * length_of_row) + column; // Indexes
così, ad esempio di quanto sopra si sarebbe avvolgere con
oneDindex = (1 * 3) + 1
E dovrebbe essere questo
Non posso credere che non ho avuto che lol ... io avevo (i 4 *) + (I * 8) non c'è da stupirsi che fosse fuori limite, grazie! – Becky
Sei il benvenuto. Ho dovuto fare esattamente la stessa cosa di recente con un gioco Tic Tac Toe che impara. Memorizzare le mosse del passato come un singolo indice è stato un passo verso il miglioramento dell'efficienza. –
Continuo sempre a tornare a questa risposta, per qualche ragione non riesco proprio a trovare un modo per memorizzare questa equazione 'index = x + y * num_cols;' sarebbe bello aggiungere come lo deduciamo! – vexe