2012-09-05 131 views
0

1.我有一個二維數組,代表一個矩陣。我需要找到總和最大的平方子矩陣。子矩陣的大小是除以2。例如行或列的數目,如果我有此查找最大總和子矩陣

9 3 5 9 
2 5 9 8 
8 4 9 7 
9 5 3 9 

最大子矩陣將是

9 8 
9 7 

,因爲它具有最大總和。


2.其次,我需要找到最大的子矩陣排列。我的意思是,我需要選擇具有子矩陣形狀的最大數字(在同一列或同一行中至少有兩個數字)。例如,四個九對角線邊緣

9 9 
9 9 

,但我不能拿第一行,並作出矩陣,因爲它確實有基體的形狀。

我仍然在努力,所以請幫助我。

這裏是我的代碼和SUBM是子矩陣

for (i=0;i<rows-subm;i++){ 
      for(j=0;j<colums-subm;j++) 
      { 
      temp=pic[i][j]+pic[i][j+1]+pic[i+1][j]+pic[i+1][j+1]; 
      if(temp > summax) 
       summax=temp; 
      } 
} 
+1

[你有什麼嘗試?](http://whathaveyoutried.com) – Keppil

+1

用毛絨動物說出來。你知道什麼?你需要什麼來解決這個問題?最重要的是,你有什麼代碼可以保證你找到子矩陣的最大值?我認爲9 8 9 7將是最大的子矩陣。 – Makoto

+0

對於零件#1,您需要查找所有可能的子矩陣。您可以選擇遞歸或查找動態編程。這是標準問題。 – Nishant

回答

1

使用矩陣行列式的計算方法的大小。看看這個example。一個2×2矩陣的行列式將被計算爲

AB

CD

ad-cb 

Instead use a+b+c+d 

result = mat[0][0] + mat[1][1] + mat[0][1] + mat[1][0]; 

記錄所有這些值替換的2x2矩陣計算的例子,找出最大從他們

+0

謝謝大家。我很欣賞它。 – Sam