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