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

In tất cả các cặp tổng xuất hiện số lần tối đa trong C ++


Trong bài toán này, chúng ta được cung cấp một mảng gồm n số nguyên duy nhất. Và chúng ta phải tìm tổng của hai số nguyên của mảng có tần số lớn nhất. Vấn đề có nhiều giải pháp và bạn cần tìm tất cả.

Input : array = { 1, 12, 5, 7, 9, 11}
Output : 16 12

Giải thích - tổng 16 và 12 xảy ra hai lần.

5 + 11 = 16 & 7 + 9 = 16
1 + 11 = 12 & 5 + 7 = 12

Bây giờ để giải quyết vấn đề này, cách tiếp cận vấn đề của chúng tôi là kiểm tra sự xuất hiện của mọi cặp tổng và sau đó in cặp đó với số lần tối đa.

Các bước giải quyết vấn đề -

Step 1: Iterate over all pairs.
Step 2: The occurrence of sum pairs is counted using hash-table.
Step 3: After the interation process is done, the sum pair with maximum occurrence is printed.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void sumPairs(int a[], int n){
   unordered_map<int, int> pairSum;
   for (int i = 0; i < n - 1; i++) {
      for (int j = i + 1; j < n; j++) {
         pairSum[a[i] + a[j]]++;
      }
   }
   int occur = 0;
   for (auto it : pairSum) {
      if (it.second > occur) {
         occur = it.second;
      }
   }
   for (auto it : pairSum) {
      if (it.second == occur)
         cout << it.first <<"\t";
   }
}
int main(){
   int a[] = { 1, 12, 5, 7, 9, 11 };
   int n = sizeof(a) / sizeof(a[0]);
   cout<<"The sum pairs with max ccurence are : "<<endl;
   sumPairs(a, n);
   return 0;
}

Đầu ra

Các cặp tổng có số lần xuất hiện tối đa là -

16 12