কম্পিউটার টিউটোরিয়াল

C++-এ X-এর চেয়ে ছোট বা সমান উপাদান ধারণকারী সাবঅ্যারে গণনা


আমাদের একটি অ্যারে arr[] দেওয়া আছে যাতে পূর্ণসংখ্যা রয়েছে এবং একটি ভেরিয়েবল X। লক্ষ্য হলো arr[]-এর সব সাবঅ্যারে যাতে শুধু X-এর চেয়ে ছোট বা সমান উপাদান রয়েছে, তাদের সংখ্যা বের করা। উদাহরণস্বরূপ, অ্যারে [1,2,3] এবং X=2 হলে সাবঅ্যারে গুলো: [1], [2], [1,2]।

উদাহরণ দিয়ে বুঝি

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

আউটপুট − X-এর চেয়ে ছোট বা সমান উপাদানধর্মী সাবঅ্যারে সংখ্যা: ৬

ব্যাখ্যা − সাবঅ্যারে গুলো: [3], [2], [1], [3,2], [2,1], [3,2,1]

ইনপুট − arr[] = { 3,6,2,7,1,8,5 }; X=5

আউটপুট − X-এর চেয়ে ছোট বা সমান উপাদানধর্মী সাবঅ্যারে সংখ্যা: ৪

ব্যাখ্যা − সাবঅ্যারে গুলো: [3], [2], [1], [5]

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

আমরা মূল অ্যারে arr[]-এর সমান সাইজের একটি বাইনারি অ্যারে temp_arr[] তৈরি করব। এই বাইনারি অ্যারেতে arr[i] <= X হলে ১, অন্যথায় ০ থাকবে। এখন temp_arr[] ট্রাভার্স করে רציף ১ গুলো (যা মানে arr[]-এ X-এর চেয়ে ছোট উপাদান) খুঁজব। প্রতিটি এমন সাবঅ্যারের দৈর্ঘ্য temp-এ রাখব। দৈর্ঘ্য temp এর অ্যারের মোট সাবঅ্যারে হবে temp*(temp+1)/2। এটাকে মোট কাউন্টে যোগ করে শেষ পর্যন্ত চলব।

  • অ্যারে arr[] এবং ভেরিয়েবল X নিন।
  • sub_X(int arr[], int size, int x) ফাংশন অ্যারে এবং x নিয়ে X-এর চেয়ে ছোট বা সমান উপাদানধর্মী সাবঅ্যারে কাউন্ট রিটার্ন করে।
  • অস্থায়ী ভেরিয়েবল temp এবং ফাইনাল টোটাল count নিন।
  • মূল অ্যারের সমান দৈর্ঘ্যের বাইনারি অ্যারে temp_arr[] নিন।
  • i=0 থেকে i<size পর্যন্ত লুপে arr[i]<=x হলে temp_arr[i]=1, অন্যথায় ০।
  • temp_arr[] ট্রাভার্স করুন।
  • যদি temp_arr[i] == 1 হয়, সাবলুপে temp_2 = i+1 থেকে শুরু করে যতক্ষণ temp_arr[temp_2] == 1 ততক্ষণ চলুন। ০ পাওয়া গেলে ব্রেক করুন।
  • সাবঅ্যারের দৈর্ঘ্য temp = temp_2 - i।
  • মোট সাবঅ্যারে temp_3 = temp*(temp+1)/2। এটাকে count-এ যোগ করুন।
  • i = temp_2 সেট করে পরবর্তী সেগমেন্টে যান।
  • শেষে count রিটার্ন করুন।

উদাহরণ

#include <iostream>
using namespace std;

int sub_X(int arr[], int size, int x) {
    int count = 0, temp = 0;
    int temp_arr[size];
    for (int i = 0; i < size; i++) {
        if (arr[i] <= x) {
            temp_arr[i] = 1;
        } else {
            temp_arr[i] = 0;
        }
    }
    for (int i = 0; i < size; i++) {
        if (temp_arr[i] == 1) {
            int temp_2;
            for (temp_2 = i + 1; temp_2 < size; temp_2++) {
                if (temp_arr[temp_2] != 1) {
                    break;
                }
            }
            temp = temp_2 - i;
            int temp_3 = (temp) * (temp + 1) / 2;
            count = count + temp_3;
            i = temp_2;
        }
    }
    return count;
}

int main() {
    int arr[] = { 2, 6, 1, 10, 5, 3 };
    int x = 4;
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count of sub-arrays which have elements less than or equal to X are: " << sub_X(arr, size, x);
    return 0;
}

আউটপুট

Count of sub-arrays which have elements less than or equal to X are: 3
  1. k-এর চেয়ে ছোট বা সমান উপাদানগুলো একসাথে আনার ন্যূনতম সোয়াপ (C++)

  2. C++-এ निरপেক্ষ পার্থক্য ১ বা তদন uglיף একটি অ্যারে থেকে সর্বোচ্চ উপাদান নির্বাচন

  3. C++-এ দেওয়া সংখ্যার চেয়ে ছোট বা সমান সর্বোচ্চ স্পেশাল প্রাইম (Special Prime) খুঁজে বের করা

  4. C++ ব্যবহার করে n-র চেয়ে ছোট বা সমান সব ফ্যাক্টোরিয়াল নম্বর বের করা