C++中生成相同和的數對的最大數量


給定一個整數陣列。目標是找到陣列中加起來產生相同和的數對的最大數量。我們必須找到此類數對的最大計數。

輸入

Arr[]= { 1,2,3,4,2 }

輸出

Maximum count of pairs with same sum : 3

說明 − 數對的和 −

{1,2}, {1,2} Sum:3
{1,3},{2,2} Sum:4
{1,4},{2,3},{3,2} Sum:5
{2,4} Sum:6
{3,4} Sum:7
Maximum count of pairs with same sum is 3 ( for sum = 5 )

輸入

Arr[]= { 5,3,6,1 }

輸出

Maximum count of pairs with same sum : 1

說明 − 數對的和 −

{5,3} Sum:8
{5,6} Sum:11
{5,1} Sum:6
{3,6} Sum:9
{3,1} Sum:4
{6,1} Sum:7
Maximum count of pairs with the same sum is 1.

下面程式中使用的演算法如下

  • 整數陣列Arr[]用於儲存整數。

  • 整數“size”儲存陣列的長度。

  • 函式countEqualSum( int arr[], int n)接收一個數組及其大小作為輸入,並返回生成相同和的數對的最大計數。

  • 首先,我們將使用“sum”陣列來儲存唯一和的頻率。

  • 在sum的每個索引處,遞增該元素的計數。

  • 陣列sum的每個索引都是一對元素的和。

  • 透過搜尋sum陣列中的最大元素並將其儲存在maxC中來查詢此類最大計數。

  • 返回maxC作為結果

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
// Function to return the maximum
// count of pairs with equal sum
int countEqualSum(int arr[], int n){
   int sum[20]={0};
   int maxC = 0;
   // Store counts of sum of all pairs
   for (int i = 0; i < n - 1; i++)
      for (int j = i + 1; j < n; j++){
         sum[ arr[i]+arr[j] ]++;
      }
      for(int i=0;i<20;i++)
         if(sum[i]>maxC)
            maxC=sum[i];
   return maxC;
}
int main(){
   int Arr[] = { 1,2,3,4,2 };
   int size = 5;
   cout <<”Maximum count of pairs which generate the same sum”
   << countEqualSum(Arr, size);
   return 0;
}

輸出

Maximum count of pairs which generate the same sum : 3

更新於: 2020年7月28日

603 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告