0
행렬 행렬 M 크기가 nxn입니다. 그 M을 크기가 인 서브 매트릭스 bxb으로 나눴습니다. 예를 들어, N = 16 및 B = 8 있다면, I는 8 × 8 크기 의 4 행렬을 갖는다. 여기에 그 함수의 구현은 잘 작동합니다.큰 행렬에서 블록 단위로 블록 읽기
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;
}
하지만 문제는 동적이지 않다는 것입니다. b이 변경된 경우 을 제외한 중간 블록을 읽는 방법 먼저 및 마지막 블록을 제외한 나머지 블록을 읽는 방법? n 및 임의의 숫자 b에 대해 일반화하고 싶습니다. 자습서 또는 코드 샘플을 제공해 주시면 감사하겠습니다. 감사.