Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng tối đa có thể có của một cửa sổ trong một mảng sao cho các phần tử của cùng một cửa sổ trong mảng khác là duy nhất trong c ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm tổng số tối đa có thể có của một cửa sổ trong một mảng sao cho các phần tử của cùng một cửa sổ trong mảng khác là duy nhất.

Đối với điều này, chúng ta sẽ được cung cấp hai mảng có số phần tử bằng nhau. Nhiệm vụ của chúng ta là tìm cửa sổ trong một phần tử có tổng lớn nhất sao cho cửa sổ tương tự trong mảng khác là duy nhất.

Ví dụ

#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;
}

Đầu ra

20