কম্পিউটার

C++-এ K-এর থেকে বড় সমস্ত উপাদান সহ সাব্যারে গণনা করুন


আমাদেরকে পূর্ণসংখ্যার একটি অ্যারে [] দেওয়া হয়েছে। এছাড়াও একটি সংখ্যা K। লক্ষ্য হল arr[]-এর সমস্ত সাবয়ারের গণনা করা যাতে সাবয়ারের সমস্ত উপাদান K-এর থেকে বড় বা K-এর সমস্ত উপাদানের থেকে কম। যদি অ্যারে হয় [1,2,3] এবং K হয় 1। সাবাররে হবে [2], [3], [2,3]।

আসুন উদাহরণ দিয়ে বুঝতে পারি।

ইনপুট − arr[] ={ 2, 2, 1, 1, 1, 5}; K=1

আউটপুট − K-এর থেকে বড় সমস্ত উপাদান সহ সাবয়ারের সংখ্যা হল − 4

ব্যাখ্যা − সুবারায়গুলো হবে:[2], [2], [5], [2,2]। প্রতিটি সাবয়ারের সমস্ত উপাদান 1 এর থেকে বেশি।

ইনপুট − arr[] ={ 3,4,5,6}; K=2

আউটপুট − K-এর চেয়ে বড় সমস্ত উপাদান সহ সাবয়ারের সংখ্যা হল − 10

ব্যাখ্যা − সুবারায় হবে − [3], [4], [5], [6], [3,4], [4,5], [5,6], [3,4,5], [4, ৫,৬], [৩,৪,৫,৬]। মোট গণনা=10।

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

আমরা একটি লুপ ব্যবহার করে অ্যারেটি অতিক্রম করব। যদি বর্তমান উপাদান K এর থেকে বেশি হয়। বৃদ্ধির সংখ্যা। অন্যথায় গণনা=0 এবং মোট=গণনা*(গণনা+1)/2 সেট করুন। (সাবয়ারের জন্য)। যদি শেষে গণনা অ-শূন্য হয়। অবশিষ্ট সাবয়ারের গণনার জন্য গণনা*(গণনা+1)/2 যোগ করুন।

  • সংখ্যার একটি অ্যারে অ্যারে নিন।

  • ফাংশন sub_greater_k(int arr[], int size, int k) অ্যারে নেয় এবং k-এর চেয়ে বড় সমস্ত উপাদান সহ সাবয়ারের গণনা প্রদান করে।

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • আমরা i=0 থেকে i পর্যন্ত লুপ ব্যবহার করে অ্যারেটি অতিক্রম করব

  • যদি arr[i]>k তারপর ইনক্রিমেন্ট কাউন্ট।

  • গণনা (উপাদান> k ) সহ সাবরারে গণনা*(গণনা+1)/2 হবে। এই ধরনের সমস্ত সাবয়ারের জন্য মোট এটি যোগ করুন।

  • শেষে আবার গণনা*(গণনা+1)/2 যোগ করুন যদি গণনাটি শূন্য হয় না।

  • ফলাফল হিসাবে মোট রিটার্ন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int sub_greater_k(int arr[], int size, int k){
   int count = 0;
   int total = 0;
   for (int i = 0; i < size; i++){
      if (arr[i] > k){
         count++;
      }
      else{
         total += (count) * (count + 1) / 2;
         count = 0;
      }
   }
   if(count){
      total += (count) * (count + 1) / 2;
   }
   return total;
}
int main(){
   int arr[] = {2, 4, 6, 1, 3, 7, 9 };
   int size = sizeof(arr) / sizeof(arr[0]);
   int k = 7;
   cout<<"Count of subarrays with all elements greater than K are: "<<sub_greater_k(arr, size, k);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of subarrays with all elements greater than K are: 1

  1. C++ এ সকলের সাথে স্কোয়ার সাবমেট্রিস গণনা করুন

  2. C++ এ প্রদত্ত XOR সহ সমস্ত জোড়া গণনা করুন

  3. C++-এ b-এর চেয়ে বেশি উপসর্গ

  4. C++ এ 0 যোগ সহ সমস্ত সাবয়ারে প্রিন্ট করুন