Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนองค์ประกอบที่เล็กที่สุดในช่วงที่กำหนดใน C++


เราได้รับอาร์เรย์ของจำนวนเต็มขนาด N ตัวแปร L และ R กำหนดช่วงระหว่าง 1 ถึง N เป้าหมายคือการหาจำนวนองค์ประกอบที่เล็กที่สุดซึ่งอยู่ในช่วง L และ R นั้น L>=1 และ R<=N.

  • เราจะทำสิ่งนี้โดยสำรวจองค์ประกอบที่อยู่ในช่วง 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[] Count เก็บจำนวนที่น้อยที่สุดในช่วง L และ R

  • ฟังก์ชัน countSmallest(int arr[],int n,int l, int r) รับอาร์เรย์, ความยาว, L และ R เป็นอินพุตและคืนค่าจำนวนที่น้อยที่สุดในช่วง

  • เริ่มต้นที่เล็กที่สุด=arr[l] องค์ประกอบซ้ายสุดและนับเริ่มต้นที่น้อยที่สุดเป็น 0

  • ตอนนี้ถ้า l<0 และ r>=n ให้คืนค่า 0, ระบุช่วงที่ไม่ถูกต้อง

  • เริ่มสำรวจอาร์เรย์จากดัชนี l-1 ถึง r-1 อัปเดตที่เล็กที่สุด if arr[i]

  • อีกครั้ง สำรวจอาร์เรย์จาก l-1 ถึง r-1 ถ้า arr[i]==เล็กที่สุด ให้นับการเพิ่มขึ้น

  • ผลตอบแทนนับตามผลลัพธ์ที่ต้องการ

  • ภายใน 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