정수 배열이 제공됩니다. 목표는 더할 때 동일한 합을 생성하는 배열의 최대 쌍 수를 찾는 것입니다. 이러한 쌍의 최대 개수를 찾아야 합니다.
입력
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