logo

Verilen 2N X 2N matrisinden N X N üst sol alt matrisinin toplamını maksimuma çıkar

Verilen bir 2N x 2N tam sayıların matrisi. Herhangi bir satırı veya sütunu istediğiniz sayıda ve istediğiniz sırayla tersine çevirmenize izin verilir. Görev, sol üstteki değerlerin maksimum toplamını hesaplamaktır. N X N alt matris, yani (0 0)'dan (N - 1 N - 1)'e kadar alt matrisin elemanlarının toplamı.

Örnekler:  

Giriş: ile[][] = {



                    112 42 83 119

                    56 125 56 49

                    15 78 101 43

                    62 98 114 108

                  }

Çıkış : 414

Verilen matris 4 X 4 boyutundadır, maksimize etmemiz gerekir 

sol üstteki 2 X 2 matrisinin toplamı yani 

mat[0][0] + mat[0][1] + mat[1][0] + mat[1][1] toplamı.

Aşağıdaki işlemler toplamı maksimuma çıkarır:

1. 2. sütunu ters çevirin

112 42 114 119

56 125 101 49

15 78 56 43

anahtar ifadesi java

62 98 83 108

2. 0. satırı ters çevirin

119 114 42 112

56 125 101 49

15 78 56 43

62 98 83 108

Sol üst matrisin toplamı = 119 + 114 + 56 + 125 = 414.

Sol üst alt matrisin toplamını en üst düzeye çıkarmak için, sol üst alt matrisin her hücresi için dört aday gözlemleyin; bu, sol üst-sağ üst-sol alt matrislerde ve sağ alt alt matrislerde değiştirilebilecek karşılık gelen hücreler anlamına gelir. 

Şimdi, nerede olursa olsun her hücreyi gözlemleyin, sol üst alt matristeki diğer hücrelerin sırasını değiştirmeden, onu sol üst alt matristeki karşılık gelen aday değerle değiştirebiliriz. Diyagram, 4 adayın maksimum değerinin sağ üst alt matriste olduğu bir örneği göstermektedir. Sol alt veya sağ alt alt matrislerdeyse, önce bir satırı veya sütunu ters çevirerek sağ üst alt matrise yerleştirebiliriz ve ardından şemada gösterildiği gibi aynı işlem sırasını takip edebiliriz. 

Bu matriste diyelim ki26en fazla 4 aday ve bir23ile değiştirilmelidir26sol üst alt matristeki hücrelerin sırasını değiştirmeden.

matris' title=

2. Sırayı Ters Çevir 
 

Verilen 2N X 2N matrisinden N X N üst sol alt matrisinin toplamını maksimuma çıkar


Ters Sütun 2 
 

Verilen 2N X 2N matrisinden N X N üst sol alt matrisinin toplamını maksimuma çıkar


7. Sırayı Ters Çevir 
 

eyaletlerin listesi

Verilen 2N X 2N matrisinden N X N üst sol alt matrisinin toplamını maksimuma çıkar


Sütun 6'yı Ters Çevir 
 

Verilen 2N X 2N matrisinden N X N üst sol alt matrisinin toplamını maksimuma çıkar


2. Sırayı Ters Çevir 
 

Verilen 2N X 2N matrisinden N X N üst sol alt matrisinin toplamını maksimuma çıkar

Aşağıda bu yaklaşımın uygulanması yer almaktadır: 

C++
// C++ program to find maximum value of top N/2 x N/2 // matrix using row and column reverse operations #include    #define R 4 #define C 4 using namespace std; int maxSum(int mat[R][C]) {  int sum = 0;  for (int i = 0; i < R / 2; i++)  for (int j = 0; j < C / 2; j++) {  int r1 = i;  int r2 = R - i - 1;  int c1 = j;  int c2 = C - j - 1;  // We can replace current cell [i j]  // with 4 cells without changing affecting  // other elements.  sum += max(max(mat[r1][c1] mat[r1][c2])  max(mat[r2][c1] mat[r2][c2]));  }  return sum; } // Driven Program int main() {  int mat[R][C]  = { 112 42 83 119 56 125 56 49  15 78 101 43 62 98 114 108 };  cout << maxSum(mat) << endl;  return 0; } 
Java
// Java program to find maximum value of top N/2 x N/2 // matrix using row and column reverse operations class GFG {  static int maxSum(int mat[][])  {  int sum = 0;  int maxI = mat.length;  int maxIPossible = maxI - 1;  int maxJ = mat[0].length;  int maxJPossible = maxJ - 1;  for (int i = 0; i < maxI / 2; i++) {  for (int j = 0; j < maxJ / 2; j++) {  // We can replace current cell [i j]  // with 4 cells without changing affecting  // other elements.  sum += Math.max(  Math.max(mat[i][j]  mat[maxIPossible - i][j])  Math.max(mat[maxIPossible - i]  [maxJPossible - j]  mat[i][maxJPossible - j]));  }  }  return sum;  }  // Driven Program  public static void main(String[] args)  {  int mat[][] = { { 112 42 83 119 }  { 56 125 56 49 }  { 15 78 101 43 }  { 62 98 114 108 } };  System.out.println(maxSum(mat));  } } /* This Java code is contributed by Rajput-Ji*/ 
Python3
# Python3 program to find the maximum value # of top N/2 x N/2 matrix using row and # column reverse operations def maxSum(mat): Sum = 0 for i in range(0 R // 2): for j in range(0 C // 2): r1 r2 = i R - i - 1 c1 c2 = j C - j - 1 # We can replace current cell [i j] # with 4 cells without changing/affecting # other elements. Sum += max(max(mat[r1][c1] mat[r1][c2]) max(mat[r2][c1] mat[r2][c2])) return Sum # Driver Code if __name__ == '__main__': R = C = 4 mat = [[112 42 83 119] [56 125 56 49] [15 78 101 43] [62 98 114 108]] print(maxSum(mat)) # This code is contributed # by Rituraj Jain 
C#
// C# program to find maximum value // of top N/2 x N/2 matrix using row // and column reverse operations using System; class GFG {  static int R = 4;  static int C = 4;  static int maxSum(int[ ] mat)  {  int sum = 0;  for (int i = 0; i < R / 2; i++) {  for (int j = 0; j < C / 2; j++) {  int r1 = i;  int r2 = R - i - 1;  int c1 = j;  int c2 = C - j - 1;  // We can replace current cell [i j]  // with 4 cells without changing affecting  // other elements.  sum += Math.Max(  Math.Max(mat[r1 c1] mat[r1 c2])  Math.Max(mat[r2 c1] mat[r2 c2]));  }  }  return sum;  }  // Driven Code  public static void Main()  {  int[ ] mat = { { 112 42 83 119 }  { 56 125 56 49 }  { 15 78 101 43 }  { 62 98 114 108 } };  Console.Write(maxSum(mat));  } } // This code is contributed // by ChitraNayal 
PHP
 // PHP program to find maximum value  // of top N/2 x N/2 matrix using row  // and column reverse operations function maxSum($mat) { $R = 4; $C = 4; $sum = 0; for ($i = 0; $i < $R / 2; $i++) for ($j = 0; $j < $C / 2; $j++) { $r1 = $i; $r2 = $R - $i - 1; $c1 = $j; $c2 = $C - $j - 1; // We can replace current cell [i j] // with 4 cells without changing  // affecting other elements. $sum += max(max($mat[$r1][$c1] $mat[$r1][$c2]) max($mat[$r2][$c1] $mat[$r2][$c2])); } return $sum; } // Driver Code $mat = array(array(112 42 83 119) array(56 125 56 49) array(15 78 101 43) array(62 98 114 108)); echo maxSum($mat) . 'n'; // This code is contributed // by Mukul Singh ?> 
JavaScript
<script> // Javascript program to find maximum value of top N/2 x N/2 // matrix using row and column reverse operations    let R = 4;  let C = 4;    function maxSum(mat)  {  let sum = 0;    for (let i = 0; i < R / 2; i++) {  for (let j = 0; j < C / 2; j++) {  let r1 = i;  let r2 = R - i - 1;  let c1 = j;  let c2 = C - j - 1;    // We can replace current cell [i j]  // with 4 cells without changing affecting  // other elements.  sum += Math.max(Math.max(mat[r1][c1] mat[r1][c2])  Math.max(mat[r2][c1] mat[r2][c2]));  }  }    return sum;  }  // Driven Program  let mat = [[112 42 83 119]   [56 125 56 49]   [15 78 101 43]   [62 98 114 108]];  document.write(maxSum(mat));    // This code is contributed by avanitrachhadiya2155 </script> 

Çıkış
414

Zaman Karmaşıklığı: O(N)2).
Yardımcı Alan: O(1) değişkenler için sabit alan kullandığından

 

Test Oluştur