📜  产生相同总和的最大对数

📅  最后修改于: 2022-05-13 01:57:50.932000             🧑  作者: Mango

产生相同总和的最大对数

给定一个数组arr[] ,任务是计算总和相同的对的最大数量。
例子:

方法:

  1. 创建一个映射来存储每对总和的频率。
  2. 遍历地图并找到最大频率。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
 
// Function to return the maximum
// count of pairs with equal sum
int maxCountSameSUM(int arr[], int n)
{
    // Create a map to store frequency
    unordered_map M;
 
    // Store counts of sum of all pairs
    // in the map
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            M[(arr[i] + arr[j])]++;
 
    int max_count = 0;
 
    // Find maximum count
    for (auto ele : M)
        if (max_count < ele.second)
            max_count = ele.second;
 
    return max_count;
}
 
// Driver code
int main()
{
    int arr[] = { 1, 8, 3, 11, 4, 9, 2, 7 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << maxCountSameSUM(arr, n);
 
    return 0;
}


Java
// Java implementation of the approach
 
class GFG
{
     
// return the max
static int Max(int arr[])
{
    int max = arr[0];
    for(int i = 1; i < arr.length; i++)
        if(arr[i] > max)max = arr[i];
     
    return max;
}
     
// Function to return the maximum
// count of pairs with equal sum
static int maxCountSameSUM(int arr[], int n)
{
    int maxi = Max(arr);
     
    // Create a map to store frequency
    int[] M = new int[2 * maxi + 1];
     
     
    for(int i = 0; i < M.length; i++)M[i] = 0;
 
    // Store counts of sum of all
    // pairs in the map
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            M[(arr[i] + arr[j])] += 1;
 
    int max_count = 0;
 
    // Find maximum count
    for (int i = 0; i < 2 * maxi; i++)
        if (max_count < M[i])
            max_count = M[i];
 
    return max_count;
}
 
// Driver code
public static void main(String args[])
{
    int arr[] = { 1, 8, 3, 11, 4, 9, 2, 7 };
    int n = arr.length;
    System.out.print(maxCountSameSUM(arr, n));
}
}
 
// This code is contributed by Arnab Kundu


Python3
# Python3 implementation of the approach
from collections import defaultdict
 
# Function to return the maximum
# count of pairs with equal sum
def maxCountSameSUM(arr, n):
 
    # Create a map to store frequency
    M = defaultdict(lambda:0)
 
    # Store counts of sum of
    # all pairs in the map
    for i in range(0, n - 1):
        for j in range(i + 1, n):
            M[arr[i] + arr[j]] += 1
 
    max_count = 0
 
    # Find maximum count
    for ele in M:
        if max_count < M[ele]:
            max_count = M[ele]
 
    return max_count
 
# Driver code
if __name__ == "__main__":
 
    arr = [1, 8, 3, 11, 4, 9, 2, 7]
    n = len(arr)
    print(maxCountSameSUM(arr, n))
     
# This code is contributed
# by Rituraj Jain


C#
// C# implementation of the approach
using System.Linq;
using System;
 
class GFG
{
     
// Function to return the maximum
// count of pairs with equal sum
static int maxCountSameSUM(int []arr, int n)
{
    int maxi = arr.Max();
     
    // Create a map to store frequency
    int[] M = new int[2 * maxi + 1];
 
    // Store counts of sum of all
    // pairs in the map
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            M[(arr[i] + arr[j])] += 1;
 
    int max_count = 0;
 
    // Find maximum count
    for (int i = 0; i < 2 * maxi; i++)
        if (max_count < M[i])
            max_count = M[i];
 
    return max_count;
}
 
// Driver code
static void Main()
{
    int []arr = { 1, 8, 3, 11, 4, 9, 2, 7 };
    int n = arr.Length;
    Console.WriteLine(maxCountSameSUM(arr, n));
}
}
 
// This code is contributed by mits


PHP


Javascript


输出:
3