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

サブ配列を否定した後に取得できる個別の値の数を見つけるためのC++プログラム


n個の要素を持つ配列Aがあるとします。与えられた数のサブセットを選択し、これらの数を否定します。取得できる配列内のさまざまな値の最大数を見つける必要があります。

したがって、入力がA =[1、1、2、2]の場合、出力は4になります。これは、最初と最後の数値を否定して、配列[-1、1、2、-2]を作成できるためです。 4つの異なる値。

ステップ

これを解決するには、次の手順に従います-

Define one set se
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   x := A[i]
   if x is present in se, then:
      insert -x into se
   Otherwise
      insert x into se
return size of se

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A) {
   set<int> se;
   int n = A.size();
   for (int i = 0; i < n; i++) {
      int x = A[i];
      if (se.count(x))
         se.insert(-x);
      else
         se.insert(x);
   }
   return se.size();
}
int main() {
   vector<int> A = { 1, 1, 2, 2 };
   cout << solve(A) << endl;
}

入力

{ 1, 1, 2, 2 }

出力

4

  1. 数の偶数の因数の合計を見つけるC++プログラム?

    このセクションでは、効率的な方法で、ある数のすべての素因数の合計を取得する方法を説明します。 n =480と言う数があります、これのすべての要因を取得する必要があります。 480の素因数は2、2、2、2、2、3、5です。すべての偶数の因数の合計は2 + 2 + 2 + 2 + 2 =10です。この問題を解決するには、この規則に従う必要があります。 − 数値が2で割り切れる場合は、それらを合計に加算し、数値を2で繰り返し除算します。 今、数は奇数でなければなりません。したがって、均等な要素は見つかりません。次に、それらの要因を単に無視します。 より良いアイデアを得るためのアル

  2. 再帰を使用して数値の階乗を見つけるC++プログラム

    非負の整数nの階乗は、n以下のすべての正の整数の積です。 例:4の階乗は24です。 4! = 4 * 3 * 2 *1 4! = 24 整数の階乗は、再帰プログラムまたは反復プログラムを使用して見つけることができます。 次のプログラムは、数値の階乗を見つけるための再帰プログラムを示しています- 例 #include <iostream> using namespace std; int fact(int n) {    if ((n==0)||(n==1))    return 1;    else   &