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