Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số phần tử nhỏ nhất trong phạm vi nhất định trong C ++


Chúng ta được cung cấp một mảng các số nguyên có kích thước N. Các biến L và R xác định một phạm vi từ 1 đến N. Mục tiêu là tìm số phần tử nhỏ nhất nằm trong phạm vi L và R sao cho L> =1 và R <=N.

  • Chúng tôi sẽ làm điều này bằng cách duyệt qua các phần tử nằm trong phạm vi L và R và tìm phần tử nhỏ nhất.

  • Một lần nữa, duyệt qua các phần tử của phạm vi L và R và đếm số gia tăng nếu bất kỳ phần tử nào bằng với giá trị nhỏ nhất được tính ở bước 1.

Hãy cùng hiểu với các ví dụ.

Đầu vào - arr [] ={1,2,3,0,3,2,0,1}, N =8, L =2, R =5

Đầu ra - Đếm số nhỏ nhất trong phạm vi - 1

Giải thích -

Các phần tử trong phạm vi L (1) đến R (5) là arr [1] đến arr [4]. {2,3,0,3}. Giá trị nhỏ nhất là 0. Tổng số 0 là 1.

Đầu vào - arr [] ={1,2,3,0,3,2,0,1}, N =8, L =3, R =8

Đầu ra - Đếm số nhỏ nhất trong phạm vi - 2

Giải thích -

Các phần tử trong phạm vi L (3) đến R (8) là arr [2] đến arr [7]. {3,0,3,2,0,1}. Giá trị nhỏ nhất là 0. Tổng số 0 là 2.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy một mảng số nguyên arr [] được khởi tạo với các số ngẫu nhiên.

  • Các số nguyên L và R đại diện cho phạm vi bên trong arr []. Count lưu trữ số lượng nhỏ nhất trong phạm vi L và R.

  • Hàm countSmallest (int arr [], int n, int l, int r) nhận một mảng, độ dài của nó, L và R làm đầu vào và trả về số đếm nhỏ nhất trong phạm vi.

  • Khởi tạo phần tử nhỏ nhất =arr [l], ngoài cùng bên trái và số lượng ban đầu của phần tử nhỏ nhất là 0.

  • Bây giờ nếu l <0 và r> =n thì trả về 0, đã cung cấp dải ô không hợp lệ.

  • Bắt đầu duyệt qua mảng từ chỉ mục l-1 đến r-1. Cập nhật nhỏ nhất nếu arr [i]

  • Một lần nữa, duyệt qua mảng từ l-1 đến r-1, nếu arr [i] ==nhỏ nhất, số gia tăng.

  • Số lượt trả về là kết quả mong muốn.

  • Bên trong main, hiển thị kết quả có trong số đếm.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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