이 프로그램은 고유한 요소가 있는 배열이 있는 경우 배열의 최소 절대 차이를 찾는 것입니다. 이 개념을 더 잘 배우기 위해 필요한 사항을 다시 살펴보겠습니다.
배열 동일한 데이터 유형의 요소 컨테이너입니다. 배열의 길이를 미리 정의해야 합니다.
절대적 차이 두 숫자 간의 차이의 절대값입니다. 즉, 차이는 항상 양수이고 음수 값은 양수로 변환됩니다.
각 원소의 최소 절대 차이의 합은 최소 절대 용질 차이 공식을 구해야 합니다.
최소 절대 차이(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