Eine Matrix hebeln M der Größe nxn. Geteilt das M in subMatrix der Größe bxb. Wenn beispielsweise die n = 16 undb = 8, dann habe ich Submatrix der Größe 8x8 . Hier ist die Implementierung dieser Funktion funktioniert gut.Block für Block von großer Matrix lesen
public static int[][] getAcutalBlock(int[][] mat, int row, int col, int number) {
/* mat is orignal big matrix of size nxn
row is starting index for the block i
col is staring index for the block *
number is representing block ID either first block, second block or ...
*/
int[][] block = new int[blockSize][blockSize];
int eRow = row + blockSize;
int eCol = col + blockSize;
if (number == 0) { // it is for first block
for (int i = row; i < eRow; i++) {
for (int j = col; j < eCol; j++) {
block[i][j] = mat[i][j];
}
}
}
else if(number == totalBlocks-1){ // it is for last block
for (int i = row; i < eRow; i++) {
for (int j = col; j < eCol; j++) {
block[i - blockSize][j - blockSize] = mat[i][j];
}
}
}
else if (isEven(number)) { // if the number is even
for (int i = row; i < eRow; i++) {
for (int j = col; j < eCol; j++) {
block[i - blockSize][j] = mat[i][j];
}
}
}
else { // if the number is odd
for (int i = row; i < eRow; i++) {
for (int j = col; j < eCol; j++) {
block[i][j - blockSize] = mat[i][j];
}
}
}
return block;
}
Aber das Problem ist, dass es nicht dynamisch ist. Wenn die b geändert wird, dann wie Zwischenblöcke mit Ausnahme ersten und letzten Block lesen? Ich möchte es generisch für eine beliebige Anzahl von n und eine beliebige Anzahl von b machen. Jedes Tutorial oder Codebeispiel wird geschätzt. Vielen Dank.
Sehr geehrte Cerise Charizard, es funktioniert für mich, danke für Ihre Bemühungen. –