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

Cの行列の2行の要素の合計の最大差


行列が与えられ、行列の2行の要素の合計の最大の差を見つけることがタスクです。 i行とj列の行列M[i、j]があるとします。行をR0とします。 R i-1へ 。差は、(R y の要素の合計)を差し引くことによって計算されます。 )-(R xの要素の合計 )、ここでx 例を使って何をしなければならないかを理解しましょう-

入力

M[4][4] = {
   { 1,2,0,5 },
   {0,1,1,0},
   {7,2,3,2}
   {1,2,4,1}};

出力

Maximum difference here is : 12

説明 −ここで、行2の要素の合計は最大で14であり、行1の要素の合計は最小である2です。したがって、最大の差は14-2=12です。

入力

M[4][4] = {
   { 0,2,0,5 },
   {0,1,4,0},
   {1,2,3,2}
   {2,2,6,0}};

出力

Maximum difference here is : 5

説明 −ここで、行4の要素の合計は最大で10であり、行2の要素の合計は最小である5です。したがって、最大差は10-5=10です

以下のプログラムで使用されるアプローチは次のとおりです

  • 少なくとも2行になるように、行列の行と列の数を入力します。

  • rowmaxd()関数では、入力行列とその行数と列数を渡し、行の合計の最大差を返します。

  • ここでは、最初に行列M[row][col]の各行の要素の合計をRSum[i]という名前の配列に格納します。 RSum[row]の長さはM[row][col]の行数に応じていることに注意してください。

  • 次に、RSum[1]-RSum[0]の最大差としてMDを想定します。ここで、RSum [0]は行0のすべての要素の合計であり、RSums[1]は行1のすべての要素の合計です。

  • また、RSum[0]がRSum[row]で最小であると想定し、それをMIN変数に格納します。

  • 0からiまでのforループでは、各RSum [row]をトラバースし、RSum [i]-MIN>MDの違いを比較します。その場合は、MDを更新します。それ以外のチェックはRSum[row]

#include<stdio.h>
#define MAX 100
//create function to calculate maximum difference between sum of elements of two rows such
that second row appears before the first
int rowmaxd(int M[][MAX], int row, int col){
   //for storing sum of elements of each row
   int RSum[row];
   for(int i=0;i<row;i++){
      int sum=0;
      for(int j=0;j<col;j++)
         sum+=M[i][j];
      RSum[i]=sum;
   }
   //calculate now max difference between two elements of RSum such that in RSum[j]-RSum[i], i<j
   int MD=RSum[1]-RSum[0];
   int MIN=RSum[0];
   for (i = 1; i < row; i++){
      //if this difference is more than MD,the update MD
      if(RSum[i]-MIN>MD)
         MD=RSum[i]-MIN;
      //if this value is even less than MIN,then update MIN
      if(RSum[i]<MIN)
         MIN=RSum[i];
   }
   return MD;
}
// Driver program
int main(){
   int r = 5, c = 4;
   int mat[][MAX] = {
      {-1, 2, 3, 4},
      {6, 3, 0, 1},
      {-1, 7, 8, -3},
      {3, 5, 1, 4},
      {2, 1, 1, 0}};
   cout<<”Maximum difference of sum of elements in two rows in a matrix is: ”<<rowmaxd(mat, r, c);
   return 0;
}

出力

上記のコードを実行すると、次の出力が得られます-

Maximum difference of sum of elements in two rows in a matrix: 5

  1. 要素の連続した差の合計によって行列行をソートするPythonプログラム

    例 以下は同じもののデモンストレーションです def diff_summation_elem(row): return sum([abs(row[index + 1] - row[index]) for index in range(0, len(row) - 1)]) my_list = [[97, 6, 47, 3], [6, 88, 3, 26], [71, 53, 34, 65], [15, 36, 5,62]] print("The list is : ") print(my_list) my_list.sort(key=diff_summation

  2. Tensorflowを使用して、Pythonで行列の特定の要素/行を合計するにはどうすればよいですか?

    Tensorflowは、Googleが提供する機械学習フレームワークです。これは、Pythonと組み合わせて使用​​されるオープンソースのフレームワークであり、アルゴリズム、深層学習アプリケーションなどを実装します。研究や生産目的で使用されます。 複雑な数学演算をすばやく実行するのに役立つ最適化手法があります。これは、NumPyと多次元配列を使用しているためです。これらの多次元配列は「テンソル」とも呼ばれます。フレームワークは、ディープニューラルネットワークの操作をサポートします。これは非常にスケーラブルであり、多くの一般的なデータセットが付属しています。 GPU計算を使用し、リソースの管理