이 프로그램은 고유한 요소가 있는 배열이 있는 경우 배열의 최소 절대 차이를 찾는 것입니다. 이 개념을 더 잘 배우기 위해 필요한 사항을 다시 살펴보겠습니다.
배열 동일한 데이터 유형의 요소 컨테이너입니다. 배열의 길이를 미리 정의해야 합니다.
절대적 차이 두 숫자 간의 차이의 절대값입니다. 즉, 차이는 항상 양수이고 음수 값은 양수로 변환됩니다.
각 원소의 최소 절대 차이의 합은 최소 절대 용질 차이 공식을 구해야 합니다.
최소 절대 차이(a) =min(abs(a – arr[j]));
여기서 1 <=j <=n 및 j !=i, abs 절대값입니다.
Input: arr = {1, 3, 9, 3, 6} Output: 8
설명
최적의 솔루션은 합을 생성하는 x =3을 선택하는 것입니다.
|1 – 3| + |3 – 3| + |9 – 3| + |3 – 3| =2 + 0 + 6 + 0 =8
알고리즘
-
주어진 입력 배열이 정렬됩니다.
-
첫 번째에 대한 최소 절대 차이 배열의 요소는 두 번째 배열 요소를 사용하여 계산됩니다.
-
마지막에 대한 최소 절대 차이 배열 요소도 마지막 두 번째 배열 요소를 사용하여 계산됩니다.
-
, 인덱스 i에 존재하는 다른 배열 요소에 대한 최소 절대 차이는 다음과 같이 계산됩니다.
-
minAbsDiff =min( abs(arr[i] – arr[i-1]), abs(ar[i] – arr[i+1]) ).
예시
#include<iostream> #include <algorithm> using namespace std; int abs_sum(int a[], int len); int main() { int a[]={1, 3, 9, 3, 6}; int n, i; n=5; sort(a, a+n); int sum = 0; sum += abs(a[0]- a[1]); sum += abs(a[n-1]-a[n-2]); for (int i = 1; i < n-1; i++) { sum += min(abs(a[i]-a[i-1]), abs(a[i]-a[i+1])); } cout<<"The element with minimum sum of absolute differences is : "<<sum; return 0; }
출력
The element with minimum sum of absolute differences is : 8