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

C++에서 집합에 추가할 수 있는 최대 차이 요소


문제에 따라 집합 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