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

他の配列の同じウィンドウの要素がC++で一意になるような、配列内のウィンドウの可能な最大合計


このチュートリアルでは、他の配列の同じウィンドウの要素が一意になるように、配列内のウィンドウの可能な最大合計を見つけるプログラムについて説明します。

このために、同じ数の要素を持つ2つの配列が提供されます。私たちのタスクは、他の配列の同じウィンドウが一意になるように、合計が最大の1つの要素のウィンドウを見つけることです。

#include <bits/stdc++.h>
using namespace std;
//returning maximum sum window
int returnMaxSum(int A[], int B[], int n) {
   //storing elements with their count
   unordered_set<int> mp;
   int result = 0;
   int curr_sum = 0, curr_begin = 0;
   for (int i = 0; i < n; ++i) {
      while (mp.find(A[i]) != mp.end()) {
         mp.erase(A[curr_begin]);
         curr_sum -= B[curr_begin];
         curr_begin++;
      }
      mp.insert(A[i]);
      curr_sum += B[i];
      result = max(result, curr_sum);
   }
   return result;
}
int main() {
   int A[] = { 0, 1, 2, 3, 0, 1, 4 };
   int B[] = { 9, 8, 1, 2, 3, 4, 5 };
   int n = sizeof(A)/sizeof(A[0]);
   cout << returnMaxSum(A, B, n);
   return 0;
}

出力

20

  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