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

C++の残りのすべての要素の合計に等しい要素


この問題では、n個の正の値で構成される配列arr[]が与えられます。私たちのタスクは、残りのすべての要素の合計に等しい要素を見つけることです アレイの。

コードの説明: その要素を除く配列のすべての要素の合計に等しい値を持つ要素を見つける必要があります。

問題を理解するために例を見てみましょう

入力: arr [] ={5、4、17、1、7}

出力: 17

説明-

残りの要素の合計は(5 + 4 + 1 + 7)=17であり、これは残りの要素17と同じです。

ソリューションアプローチ-

この問題の簡単な解決策は、配列のすべての要素の合計が指定された要素の2倍であるという事実を使用することです。このために、次の手順に従います。

ステップ1: 配列のすべての要素の合計を求めます。
ステップ2: 配列の各要素のループ

ステップ2.1: arr [i] ==sum/2の場合。

ステップ2.1.1: 真であれば。フラグ=1、ループを解除します。

ステップ2.2.1: falseの場合は、そのままにしておきます。

ステップ3: フラグ==1の場合、arr[i]を出力します
ステップ4: それ以外の場合は、「そのような要素が見つかりません」と印刷します。 」。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;

void findElemenetInArray(int arr[], int n) {
   
   int arraySum = 0;
   int flag = 0, i;
   for (i = 0; i < n; i++)
      arraySum += arr[i];

   for (i = 0; i < n; i++)
      if ( (2*arr[i]) == arraySum ) {
         flag = 1;
         break;
      }
         
   if(flag)
      cout<<arr[i];
   else
      cout<<"No such element is found!";
   
}

int main() {
   int n = 5;
   int arr[n] = { 5, 4, 7, 1, 17 };
   findElemenetInArray(arr, n);
   return 0;
}

出力

17

  1. C++の無向グラフの連結成分すべての最小要素の合計

    この問題では、arr [i]が(i + 1)番目のノードを表すN個の数値の配列arrが与えられます。また、エッジのMペアがあり、uとvはエッジによって接続されたノードを表します。私たちのタスクは、無向グラフのすべての連結成分の最小要素の合計を見つけるプログラムを作成することです。ノードが他のノードに接続されていない場合は、1つのノードを持つコンポーネントとしてカウントします。 問題を理解するために例を見てみましょう 入力 arr[] = {2, 7, 5, 1, 2} m = 2 1 2 4 5 出力 8 説明 以下は上に描かれたグラフです- 2つの接続されたノードと1

  2. 配列にPythonの残りのすべての要素の合計に等しい要素があるかどうかを確認します

    numsという配列があるとすると、その配列に他のすべての要素の合計と同じ値の要素が含まれているかどうかを確認する必要があります。 したがって、入力がnums =[3,2,10,4,1]のような場合、出力はTrue、10 =(3 + 2 + 4 + 1)になります。 これを解決するには、次の手順に従います- freq:=空のマップ 合計:=0 範囲0からnums-1のサイズのiの場合、do freq [nums [i]]:=freq [nums [i]] + 1 合計:=合計+ nums [i] 合計が偶数の場合、 freq [quotient of(total / 2)