문제에 따라 집합 arr[n]이 주어집니다. 여기서 n은 집합의 정수 요소 수입니다. 작업은 추가될 최대 차이 요소를 찾는 것입니다. 집합의 요소를 가져옵니다. 즉, 차이는 |a-b| 여기서 'a'와 'b'는 둘 다 집합에 속하며 그 차이가 최소가 되어서는 안 됩니다. 따라서 집합에서 구별되고 가장 큰 차이의 최대 수를 계산합니다. 예제를 통해 문제와 해결 방법을 이해합시다.
입력 - 세트 ={1, 5}
출력 − 세트에 추가할 수 있는 최대 차이 요소:1
설명 − 집합에는 1개의 차이만 있습니다. 즉, |1-5| =4
입력 - 세트 ={2, 7, 1, 9}
출력 − 최대 차이
집합에 추가할 수 있는 요소는 다음과 같습니다. 5
설명 − 세트의 차이점은 다음과 같습니다. −
|2-7| = 5 |7-1| = 6 |1-9| = 8 |2-9| = 7 |7-9| = 2
아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.
-
집합의 값을 저장하기 위해 정수 배열 arr[n]을 사용합니다.
-
maximum() 함수에서 3~6단계를 따르세요.
-
요소 ele, temp, val을 선언하고 값을 arr[0]
과 동일하게 설정합니다. -
1에서 배열의 크기가 1단계 증가할 때까지 i를 반복합니다.
-
배열에 있는 모든 요소의 gcd를 찾습니다.
-
temp를 temp 또는 arr[i] 사이의 최대값으로 설정합니다.
-
-
total은 temp/val로, max는 total과 size의 차이로 설정합니다.
-
반환 및 최대 인쇄.
예시
#include <bits/stdc++.h> using namespace std; //function to find maximum difference element int maximum(int arr[], int size){ int ele = arr[0]; int val = ele; int temp = ele; for (int i = 1; i < size; i++){ val = __gcd(val, arr[i]); temp = max(temp, arr[i]); } int total = temp / val; int max = total - size; return max; } int main(){ int arr[] = { 2, 7, 1, 9}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Maximum difference elements that can added to a set is: "<<maximum(arr, size); return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
Maximum difference elements that can added to a set is: 5