如果我有一個二維數組,如下圖所示,我需要獲取最大行的最大值和最左列(一個值)並存儲該值的座標(I,J)。然後,我需要將該子數組視爲該數值的右下角,並再次從最頂端的行或最左邊的列中找到最大值。這將繼續貫穿整個二維數組,以便最終獲得所有值的Nx2座標數組。 (0,0),(1,1),(3,2),(4,3),((3),(4), 5,4)。如何查找沿2d數組中子數組最頂行和最左列的最大值?
4 2 2 1 0
2 3 2 1 0
2 2 1 1 1
1 1 2 1 0
1 1 0 1 0
0 0 1 0 0
我曾嘗試以下,但每個子陣列的左上角總是從對角線(即(0,0),(1,1)......),而不是正下方的價值和在前一個最大值的右側。例如,如果先前的最大值具有座標(3,2),則下一個子陣列的左上角應該是(4,3)。
// Top left corner of subarray set each time.
for(int p = 0; p < myMatrix.length; p++){
int maximum = myMatrix[p][p];
coordinates[p][0] = p;
coordinates[p][1] = p;
// Iterates through leftmost column of subarray.
for(int i = p; i < table_data.length; i++){
if(maximum <= myMatrix[i][p]){
maximum = myMatrix[i][p];
coordinates[p][0] = i;
coordinates[p][1] = p;
}
}
//Iterates through topmost row of subarray.
for(int j = p; j < myMatrix[0].length; j++){
if(maximum <= table_data[p][j]){
maximum = myMatrix[p][j];
coordinates[p][0] = p;
coordinates[p][1] = j;
}
}
}
謝謝!你是對的,我只需要myMatrix,table_data變量是一個錯誤。 –