0
我需要编写一个转换矩阵的代码,我不能这样做,程序只替换几个位置,其他位置保持在同一位置。任何想法这个问题?Java:转置矩阵 - 分而治之
我需要任何矩阵工作为n×n
public static int [][] getTransposed(int matrix[][], int initRow, int endRow, int initColumn, int endColumn, int totalSize) {
if (endRow - initRow <= 2 && endColumn - initColumn <= 2) {
return invertPosition(matrix, initRow, endRow, initColumn, endColumn);
} else {
int mediumRow = (initRow + endRow)/2;
int mediumColumn = (initColumn + endColumn)/2;
getTransposed(matrix, initRow, mediumRow, initColumn, mediumColumn, totalSize);
getTransposed(matrix, initRow, mediumRow, mediumColumn, endColumn, totalSize);
}
return matrix;
}
private static int [][] invertPosition(int matrix[][], int initRow, int endRow, int initColumn, int endColumn) {
int temp;
for (int r = initRow; r < endRow; r++) {
for (int c = initColumn; c < endColumn; c++) {
temp = matrix[r][c];
matrix[r][c] = matrix[c][r];
matrix[c][r] = temp;
}
}
return matrix;
}
这代码看上去比它应该完成这个任务变得更加困难。至于这个问题,你从'getTransposed'函数返回值,但是当你递归地调用它时,你不会把这个值赋给任何东西。 – Shadov
匆匆一瞥,我错过了两个递归调用,涉及'getTransposed(matrix,modiumRow,endRow,...)'(一个用于两个列范围)。一些简单的'System.out.println(/ *所有行/列信息* /)''语句可能会让你自己弄清楚。如果不是,通常会赞赏[MCVE]。 – Marco13