C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のMatrixで特定のペアを検索します


整数のnxn行列マットがあるとします。インデックスのすべての選択肢にわたって、mat(c、d)-mat(a、b)の最大値を見つける必要があります。ここで、c>aおよびd>bであることに注意する必要があります。したがって、行列が-

のような場合


1 2 -1 -4 -20
-8 -3 4 2 1
3 8 6 1 3
-4 -1 1 7 -6
0 -4 10 -5 1

出力は18になります。これは、mat [4、2] --mat [1、0]=18の差が最大であるためです。

これを解決するために、index(i、j)が(i、j)から(n-1、n-1)までの行列の要素の最大値を格納するように行列を前処理し、その過程でこれまでに見つかった最大値を更新し続けます。次に、最大値を返します。

#include<iostream>
#define N 5
using namespace std;
int findMaxValue(int matrix[][N]) {
   int maxValue = -99999;
   int arr_max[N][N];
   arr_max[N-1][N-1] = matrix[N-1][N-1];
   int max_val = matrix[N-1][N-1];
   for (int j = N - 2; j >= 0; j--) {
      if (matrix[N-1][j] > max_val)
      max_val = matrix[N - 1][j];
      arr_max[N-1][j] = max_val;
   }
   max_val = matrix[N - 1][N - 1];
   for (int i = N - 2; i >= 0; i--) {
      if (matrix[i][N - 1] > max_val)
      max_val = matrix[i][N - 1];
      arr_max[i][N - 1] = max_val;
   }
   for (int i = N-2; i >= 0; i--) {
      for (int j = N-2; j >= 0; j--) {
         if (arr_max[i+1][j+1] - matrix[i][j] > maxValue)
         maxValue = arr_max[i + 1][j + 1] - matrix[i][j];
         arr_max[i][j] = max(matrix[i][j],max(arr_max[i][j + 1],arr_max[i + 1][j]) );
      }
   }
   return maxValue;
}
int main() {
   int mat[N][N] = {
      { 1, 2, -1, -4, -20 },
      { -8, -3, 4, 2, 1 },
      { 3, 8, 6, 1, 3 },
      { -4, -1, 1, 7, -6 },
      { 0, -4, 10, -5, 1 }
   };
   cout << "Maximum Value is " << findMaxValue(mat);
}

出力

Maximum Value is 18

  1. グラフ行列の転置を見つけるためのC++プログラム

    このプログラムでは、行列を取得し、行列の転置を出力します。転置行列では、行は列になり、その逆も同様です。 アルゴリズム Begin Take number of rows and columns of the matrix. Take The elements of the matrix and stored in the matrix ‘A’. The transpose matrix is found by exchanging the rows with columns and columns with rows. Print both t

  2. 行列の転置を見つけるためのC++プログラム

    行列は、行と列の形式で配置された数値の長方形の配列です。行列の転置は、元の行が現在の列である新しい行列であり、その逆も同様です。たとえば。 マトリックスは以下のとおりです- 1 2 3 4 5 6 7 8 9 上記の行列の転置は次のとおりです。 1 4 7 2 5 8 3 6 9 行列の転置を見つけるプログラムは次のとおりです- 例 #include<iostream< using namespace std; int main() {    int transpose[10][10], r=3, c=2, i, j;    int a