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

Cの小さい数の後に大きい要素が表示されるように、2つの要素間の最大差


サイズNの整数の配列が与えられます。配列はランダムな順序の整数で構成されます。タスクは、大きい要素が小さい数の後に表示されるように、2つの要素間の最大の差を見つけることです。つまり、Arr [j]-Arr [i]は、j>iとなるように最大になります。

入力

Arr[] = { 2,1,3,8,3,19,21}.

出力 −大きい要素が小さい数の後に表示されるような2つの要素間の最大差− 20

説明 −最大の差は21と1の間であり、21は配列の1の後に表示されます。

入力

Arr[] = {18, 2,8,1,2,3,2,6 }.

出力 −大きい要素が小さい数の後に表示されるような2つの要素間の最大差− 6

説明 −最大の差は8と2の間であり、8は配列の2の後に表示されます。

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

  • 長方形の辺のペアを含む整数の配列を宣言します。(Arr [])

  • 配列のサイズを格納する変数を作成します。 (n)

  • 関数maxArea(int arr []、int n)は、長方形の最大面積を計算するために使用されます。入力配列とそのサイズを引数として取ります。

  • maxArea()内で、配列Dim [2]を宣言しました。ソートされた配列を(降順で)トラバースした後に見つかった2つのストアの上位2つの辺arr[]。

  • arr []は降順でソートされるため、上位4辺が先頭にある必要があります。一対の辺が見つかるようにarr[]を繰り返します。

  • 最初は0でDim[]を初期化します。

  • whileループ内で、dim[0]とdim[1]の値が見つからない、またはarr[]の終わりに達するj<2まで継続するという条件を設定します。 (i

  • そのような辺のペアが見つかった場合(if(arr [i] ==arr [i + 1]))、それをdim [j]に格納し、次の辺のjをインクリメントします。

  • 結果をdim[0]とdim[1]の積として返します。

  • 注-sort(arr、n)は、arrを降順でソートすることになっています。

#include <stdio.h>
int maxDiff(int arr[], int n){
   // Maximum difference found so far
   int MD = arr[1] - arr[0];
   // Minimum number visited so far
   int min = arr[0];
   for(int i = 1; i < n; i++){
      if (arr[i] - min > MD)
         MD = arr[i] - min;
      if (arr[i] < min)
         min = arr[i];
   }
   return MD;
}
/* Driver program to test above function */
int main(){
   int arr[] = {2,5,7,3,4,12};
   int n=6;
   // Function calling
   printf("Maximum difference is : %d ",maxDiff(arr, n));
   return 0;
}

出力

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

The maximum difference between two elements such that the larger element appears after the smaller number : 10

  1. C++で2つの要素が隣接しないような循環配列の最大合計

    この問題では、循環配列cirArr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように循環配列の最大合計を見つけるプログラムを作成することです。 問題の説明 循環配列の場合、隣接する要素を取得できないように、配列の要素の最大合計を見つける必要があります。つまり、代替要素を取得する必要があります。 循環アレイ は、配列の最後の要素が最初の要素に接続されている特殊なタイプの配列です。 問題を理解するために例を見てみましょう 入力 cirArr[] = {4, 1, 5, 3, 2} 出力 9 説明 最大合計循環サブシーケンスは[4、5、2]です。合計=9 ソリ

  2. C++を使用してすべての要素が割り切れるような配列要素を見つけます

    要素が少ない配列Aがあるとします。すべての要素をそれで分割できるように、Aから要素を見つける必要があります。 Aが[15、21、69、33、3、72、81]のようであるとすると、すべての数値は3で割り切れる可能性があるため、要素は3になります。 この問題を解決するために、Aの最小の数値を取得し、すべての数値を最小の数値で除算できるかどうかを確認します。はいの場合は数値を返し、そうでない場合はfalseを返します。 例 #include<iostream> #include<algorithm> using namespace std; int getNumber(in