Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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[]은 정수를 저장하는 데 사용됩니다.

  • 정수 '크기'는 배열의 길이를 저장합니다.

  • countEqualSum( int arr[], int n) 함수는 배열의 크기를 입력으로 받아 동일한 합계를 생성하는 쌍의 최대 개수를 반환합니다.

  • 우선 'sum' 배열을 사용하여 고유한 합계의 빈도를 저장합니다.

  • 합계의 각 인덱스에서 해당 요소의 개수를 증가시킵니다.

  • 배열 sum의 각 인덱스는 요소 쌍의 합입니다.

  • 배열 sum 내부의 max 요소를 검색하여 최대 개수를 찾아 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