Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 범위에서 가장 작은 요소의 수 계산


크기 N의 정수 배열이 제공됩니다. 변수 L과 R은 1과 N 사이의 범위를 정의합니다. 목표는 범위 L에 있는 가장 작은 요소의 수를 찾고 L>=1이고 R<=N인 R

  • L과 R 범위에 있는 요소를 탐색하고 가장 작은 요소를 찾아 이를 수행합니다.

  • 다시, 범위 L 및 R의 요소를 순회하고 1단계에서 계산된 가장 작은 요소와 동일한 요소가 있으면 카운트를 증가시킵니다.

예를 들어 이해합시다.

입력 - arr[]={ 1,2,3,0,3,2,0,1 }, N=8, L=2, R=5

출력 − 범위에서 가장 작은 수 − 1

설명 -

범위 L(1) ~ R(5)의 요소는 arr[1] ~ arr[4]입니다. { 2,3,0,3 }. 가장 작은 값은 0입니다. 0의 개수는 1입니다.

입력 - arr[]={ 1,2,3,0,3,2,0,1 }, N=8, L=3, R=8

출력 − 범위에서 가장 작은 수 − 2

설명 -

범위 L(3) ~ R(8)의 요소는 arr[2] ~ arr[7]입니다. { 3,0,3,2,0,1 }. 가장 작은 값은 0입니다. 0의 개수는 2입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 임의의 숫자로 초기화된 정수 배열 arr[]을 사용합니다.

  • 정수 L과 R은 arr[] 안의 범위를 나타냅니다. 개수는 L 및 R 범위에서 가장 작은 개수를 저장합니다.

  • countSmallest(int arr[],int n,int l, int r) 함수는 배열, 길이, L 및 R을 입력으로 받아 범위에서 가장 작은 개수를 반환합니다.

  • 가장 왼쪽에 있는 element=arr[l]을 초기화하고 가장 작은 것의 초기 개수를 0으로 초기화합니다.

  • 이제 l<0 및 r>=n이면 0을 반환하고 잘못된 범위가 제공됩니다.

  • 인덱스 l-1에서 r-1까지 배열 탐색을 시작합니다. arr[i]인 경우 가장 작게 업데이트합니다.

  • 다시, 배열을 l-1에서 r-1로 순회합니다. arr[i]==smallest이면 카운트를 증가시킵니다.

  • 원하는 결과로 카운트를 반환합니다.

  • main 내부에서 count에 있는 결과를 표시합니다.

예시

#include <bits/stdc++.h>
using namespace std;
// Function to find if number is prime
int countSmallest(int arr[],int n,int l, int r){
   int smallest=arr[l];
   int count=0;
   if(l<0 && r>=n)
      return 0;
   for(int i=l-1;i<r;i++){
      if(arr[i]<=smallest){
         smallest=arr[i];
      }
   }
   for(int i=l-1;i<r;i++){
      if(arr[i]==smallest){
         ++count;
      }
   }
   return count;
}
int main(){
   int arr[] = { 3,2,1,1,2,3 };
   int n = 6;
   int L,R;
   int count=0;
   L=1,R=5;
   count=countSmallest(arr,n,L,R);
   cout<<endl<<"Count of number of smallest in given range:"<<count;
   L=3,R=4;
   count=countSmallest(arr,n,L,R);
   cout<<endl<<"Count of number of smallest in given range:"<<count;
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of number of smallest in given range:2
Count of number of smallest in given range:2