C ++
 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[]内の範囲を表します。 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への配列のトラバースを開始します。 arr [i]の場合、最小値を更新します

  • ここでも、配列をl-1からr-1までトラバースします。arr[i] ==最小の場合は、カウントをインクリメントします。

  • 希望する結果としてカウントを返します。

  • メイン内で、カウントに存在する結果を表示します。

#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

  1. C++でのニースサブアレイの数を数える

    整数numsと整数kの配列があるとします。サブアレイは、k個の奇数が存在する場合、ナイスサブアレイと呼ばれます。素敵なサブ配列の数を見つける必要があります。したがって、配列が[1,1,2,1,1]で、k =3の場合、サブ配列は[1,1,2,1]と[1,2,1]であるため、出力は2になります。 、1] これを解決するには、次の手順に従います- ans:=0、n:=nums配列のサイズ 左:=0、右:=0、カウント:=0 配列を奇数と定義し、これをnumsに存在するすべての奇数値で埋めます =kの場合、 iが0で、jがk – 1の範囲で奇数– 1のサイズの場合、iとjを1増やします

  2. C++の配列内の偶数要素と奇数要素の数をカウントします

    このチュートリアルでは、配列内の偶数要素と奇数要素の数を見つけるプログラムについて説明します。 このために、アレイが提供されます。私たちのタスクは、指定された配列の偶数要素と奇数要素の数を計算することです。 例 #include<iostream> using namespace std; void CountingEvenOdd(int arr[], int arr_size){    int even_count = 0;    int odd_count = 0;    //looping through the