【发布时间】:2017-11-01 22:00:00
【问题描述】:
我需要编写代码来转换转置矩阵,但我做不到,程序只替换了几个位置,其他位置保持不变。对这个问题有什么想法吗?
我需要使用任何矩阵 nxn
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函数返回值,但是当您递归调用它时,您不会将该值分配给任何东西。 -
一眼看去,我错过了两个递归调用,涉及
getTransposed(matrix, modiumRow, endRow, ...)(一个用于两个列范围)。一些简单的System.out.println(/* all row/col information*/);语句可能会让您自己解决这个问题。如果没有,通常会感谢minimal reproducible example。
标签: java matrix transpose divide-and-conquer