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

C ++の絶対差の合計が最小の配列要素?


このプログラムは、明確な要素を持つ配列がある場合に、配列の最小絶対差を見つけることです。この概念をよりよく学ぶために、必要なものを再ブラシします。

配列 同じデータ型の要素のコンテナです。配列の長さを事前に定義する必要があります。

絶対差 は、2つの数値の差の絶対値です。つまり、差は常に正であり、負の値は正に変換されます。

各元素の最小絶対差の合計を求める必要があります。最小絶対溶質差の式は次のとおりです。

最小絶対差(a)=min(abs(a – arr [j]));

ここで、1 <=j <=nおよびj!=i、 abs は絶対値です。

Input: arr = {1, 3, 9, 3, 6}
Output: 8

説明

最適な解決策は、x =3を選択することです。これにより、合計が生成されます

| 1 – 3 | + | 3 – 3 | + | 9 – 3 | + | 3 – 3 | =2 + 0 + 6 + 0 =8

アルゴリズム

  • 指定された入力配列がソートされます。

  • 最初のの最小絶対差 配列の要素は、2番目の配列要素を使用して計算されます。

  • 最後の最小絶対差 配列要素も、最後から2番目の配列要素を使用して計算されます。

  • 、インデックスiに存在する他の配列要素の最小絶対差は、次のように計算されます:

  • minAbsDiff =min(abs(arr [i] – arr [i-1])、abs(ar [i] – arr [i + 1]))。

#include<iostream>
#include <algorithm>
using namespace std;
int abs_sum(int a[], int len);
int main() {
   int a[]={1, 3, 9, 3, 6};
   int n, i;
   n=5;
   sort(a, a+n);
   int sum = 0;
   sum += abs(a[0]- a[1]);
   sum += abs(a[n-1]-a[n-2]);
   for (int i = 1; i < n-1; i++) {
      sum += min(abs(a[i]-a[i-1]), abs(a[i]-a[i+1]));
   }
   cout<<"The element with minimum sum of absolute differences is : "<<sum;
   return 0;
}

出力

The element with minimum sum of absolute differences is : 8

  1. C ++の絶対差の合計が最小の配列要素?

    このプログラムは、明確な要素を持つ配列がある場合に、配列の最小絶対差を見つけることです。この概念をよりよく学ぶために、必要なものを再ブラシします。 配列 同じデータ型の要素のコンテナです。配列の長さを事前に定義する必要があります。 絶対差 は、2つの数値の差の絶対値です。つまり、差は常に正であり、負の値は正に変換されます。 各元素の最小絶対差の合計を求める必要があります。最小絶対溶質差の式は次のとおりです。 最小絶対差(a)=min(abs(a – arr [j])); ここで、1 <=j <=nおよびj!=i、 abs は絶対値です。 Input: arr = {1, 3,

  2. C++合計配列パズル

    配列 同じデータ型の複数の要素を格納するデータ構造です。値のセット全体を一度に保存できます。ただし、その長さは事前に定義する必要があります。 この合計配列パズルでは、nと言う明確なサイズの配列A1が与えられます。このパズルを解くために、位置が使用されている要素を除く配列のすべての要素の合計を格納するS1という配列を作成します。たとえば、S1 [3]が計算されている場合、位置4の要素を除くA1のすべての要素の合計が求められます。 例- Array A1 = {1,2,3,4,6} Output S1 = {15,14,13,12,10} 説明 −合計配列を計算するには、初期配列の各要素を合計