주어진 크기의 정수 요소의 arr[]와 양의 정수 k의 배열이 주어지고 절대 차이가 주어진 정수 k를 초과하지 않는 요소 쌍의 수를 계산하는 것이 작업입니다.
배열은 같은 유형의 요소에 대한 고정 크기 순차 컬렉션을 저장할 수 있는 일종의 데이터 구조입니다. 배열은 데이터 모음을 저장하는 데 사용되지만 종종 배열을 같은 유형의 변수 모음으로 생각하는 것이 더 유용합니다.
예를 들어
Input − int arr[] = {2, 3, 6, 12, 14}, k= 5
Output − count is : 3 설명 - 최대 절대 차이가 k보다 크지 않은 쌍, 즉 이 예에서 5로 형성된 쌍은 다음과 같습니다. (2, 3), (2, 6), (3,6) 즉 {2, 3, 6} 따라서 카운트 3입니다.
Input − int arr[] = {2, 3, 6, 12, 14}, k= 10
Output − count is : 4 설명 - 최대 절대 차이가 k보다 크지 않은 쌍, 즉 이 예에서 10으로 형성된 쌍은 다음과 같습니다. (2, 3), (2, 6), (3,6), (2, 12), (3, 12 ), (6, 12) 즉 {2, 3, 6, 12} 따라서 최대 요소가 4이므로 개수는 4입니다.
Input − int arr[] = {2, 3, 6, 12, 14}, k= 0
Output − count is : 0 설명 − 차이가 0인 쌍이 없으므로 count는 0입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
arr[] 및 양의 정수 k
라고 가정해 보겠습니다. -
배열의 요소에 따라 정수 값을 반환하는 length() 함수를 사용하여 배열의 길이를 계산합니다.
-
요소 수를 저장할 임시 변수를 가져옵니다.
-
첫 번째와 마지막 두 개의 임시 변수를 선언하고 0으로 초기화합니다.
-
sort 메소드를 호출하여 배열을 정렬하고 배열과 배열의 크기를 함수의 인수로 전달합니다.
-
i에 대한 루프를 0으로 시작하고 i가 배열 크기보다 작습니다.
-
루프 내에서 시작 while j
-
동안 내부에서 IF count
로 설정합니다. -
개수 반환
-
결과를 인쇄하십시오.
예시
#include <iostream>
#include <algorithm>
using namespace std;
int countmax(int arr[], int size, int K){
int result = 0;
int i = 0, j = 0;
int beg = 0;
int end = 0;
// Sort the array
sort(arr, arr + size);
// Find max elements
for (i = 0; i < size; i++) {
// Count all elements which are in the range
while (j < size && arr[j] <= arr[i] + K)
j++;
if (result < (j - i)) {
result = (j - i);
beg = i;
end = j;
}
}
// Return the max count
return result;
}
// main function
int main(){
int arr[] = { 2, 3, 6, 12, 14 };
int size = sizeof(arr) / sizeof(arr[0]);
int K = 5;
cout <<"count is "<<countmax(arr, size, K) << endl;
return 0;
} 출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
count is 3