정렬되지 않은 정수 요소 배열이 제공되며 작업은 다음과 같은 두 가지 주요 사항을 계산하는 것입니다.
- 설정 비트 수가 같은 요소
- 또한 동일한 세트 비트를 가진 요소는 본질적으로 연속적이어야 합니다.
입력
int arr[] = { 5, 8, 1, 2, 9, 12}
출력 − 동일한 수의 설정 비트를 갖는 연속 배열 요소의 최대 수는 − 3
입니다.설명 - 우리는 배열의 요소에 대한 이진 숫자를 계산하고 설정 비트를 계산합니다.
arr[0] = 5 => 0101 => total set bits are -: 2 arr[1] = 8 => 1000 => total set bits are -: 1 arr[2] = 1 => 0001 => total set bits are -: 1 arr[3] = 2 => 0010 => total set bits are -: 1 arr[4] = 9 => 1001 => total set bits are -: 2 Arr[5] = 12 => 1100 => total set bits are -: 2
따라서 동일한 수의 설정 비트를 가진 요소와 자연적으로 인접한 요소는 5, 9 및 12입니다. 따라서 동일한 수의 세트 비트를 갖는 연속 배열 요소의 최대 수는 3
입니다.입력 - 정수 arr[] ={ 5, 8, 1, 2}
출력 − 동일한 수의 설정 비트를 갖는 연속 배열 요소의 최대 수는 − 2
입니다.설명 - 우리는 배열의 요소에 대한 이진 숫자를 계산하고 설정 비트를 계산합니다.
arr[0] = 5 => 0101 => total set bits are -: 2 arr[1] = 8 => 1000 => total set bits are -: 1 arr[2] = 1 => 0001 => total set bits are -: 1 arr[3] = 2 => 0010 => total set bits are -: 1
따라서 동일한 수의 설정 비트를 가진 요소와 자연적으로 인접한 요소는 1과 2입니다. 따라서 동일한 수의 세트 비트를 갖는 연속 배열 요소의 최대 수는 2
입니다.아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
정수형 배열 요소 입력
-
크기 함수를 사용하여 배열의 크기를 계산하고 함수에 전달
-
임시 변수를 가져와서 값 1로 설정하고 값이 1인 최대 변수도 설정합니다.
-
벡터 유형의 변수 vec 생성
-
0부터 배열 크기까지 루프 시작
-
전달된 주어진 요소의 총 세트 비트 수를 반환하고 카운트를 벡터에 계속 저장하는 "__builtin_popcount(element)" 함수를 사용하여 배열 요소의 이진 세트 비트를 계산합니다.
-
1에서 벡터 크기까지 루프 시작
-
벡터 내부에서 vec[i+1] =vec[i]인지 확인한 다음 temp 값을 1 증가시킵니다.
-
그렇지 않으면 온도를 1로 설정하십시오.
-
max함수를 사용하여 temp와 maximum 사이의 최대값을 선택하여 최대값을 설정합니다.
-
최대 변수 반환
-
결과를 인쇄하십시오.
예시
#include <bits/stdc++.h> using namespace std; //function to calculate maximum same number of bits int maximum_SameBits(int arr[], int size){ int temp = 1; int maximum = 1; vector<int> vec; for (int i = 0; i < size; i++){ vec.push_back(__builtin_popcount(arr[i])); } for (int i = 1; i < vec.size(); i++){ if (vec[i + 1] == vec[i]){ temp++; } else{ temp = 1; } maximum = max(maximum, temp); } return maximum; } int main(){ int arr[] = { 5, 8, 1, 2, 9, 12}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Maximum number of contiguous array elements with same number of set bits are: "<<maximum_SameBits(arr, size); return 0; }
출력
Maximum number of contiguous array elements with same number of set bits are: 3