주어진 크기의 정수 요소의 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