এই আর্টিকেলে আমরা একটি দেওয়া সিকোয়েন্সে সেগমেন্ট বা সাবঅ্যারে সংখ্যা বের করব যেখানে সকল উপাদান দেওয়া সংখ্যা X-এর চেয়ে বড়।
ওভারল্যাপিং সেগমেন্ট শুধু একবার কাউন্ট হবে, এবং দুটি সटा উপাদান বা সেগমেন্ট আলাদা করে কাউন্ট হবে না। সমস্যার মৌলিক উদাহরণ:
ইনপুট : arr[ ] = { 9, 6, 7, 11, 5, 7, 8, 10, 3}, X = 7
আউটপুট : 3
ব্যাখ্যা : { 9 }, { 11 } এবং { 8, 10 } হল 7-এর চেয়ে বড় সেগমেন্ট
ইনপুট : arr[ ] = { 9, 6, 12, 2, 11, 14, 8, 14 }, X = 8
আউটপুট : 4
ব্যাখ্যা : { 9 }, { 12 }, { 11, 14 } এবং { 14 } হল 8-এর চেয়ে বড় সেগমেন্ট
সমাধানের পদ্ধতি
নেইভ পদ্ধতি (Naive Approach)
এই সমস্যায় আমরা একটি state ভেরিয়েবল ০ দিয়ে ইনিশিয়ালাইজ করি এবং দেওয়া অ্যারে প্রসেস করি। যখন X-এর চেয়ে বড় উপাদান পাওয়া যায়, state কে ১ করি এবং উপাদান প্রসেস করি। যখন X-এর চেয়ে কম বা সমান সংখ্যা পাওয়া যায়, state কে ০ করি এবং কাউন্ট ১ বাড়াই state ১ থেকে ০ হওয়ার প্রতিবার।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int main (){ int a[] = { 9, 6, 12, 2, 11, 14, 8, 14 }; int n = sizeof (a) / sizeof (a[0]); int X = 8; int state = 0; int count = 0; // অ্যারে traverser for (int i = 0; i < n; i++){ // চেক করো উপাদান X-এর চেয়ে বড় কিনা if (a[i] > X){ state = 1; } else{ // যদি ফ্ল্যাগ true হয় if (state) count += 1; state = 0; } } // শেষ সেগমেন্ট চেক if (state) count += 1; cout << "Number of segments where all elements are greater than X: " << count; return 0; }
আউটপুট
Number of segments where all elements are greater than X: 4
উপরোক্ত প্রোগ্রামের ব্যাখ্যা
উপরোক্ত প্রোগ্রামে আমরা state-কে একটি সوییচ হিসেবে ব্যবহার করি, X-এর চেয়ে বড় সংখ্যা পাওয়া যেতে state ১ সেট করি এবং X-এর চেয়ে কম বা সমান সংখ্যা পাওয়া যেতে state ০ সেট করি। state ১ হয়ে আবার ০ হওয়ার প্রতিবার কাউন্ট ১ বাড়াই। অবশেষে count-এ সংরক্ষিত ফলাফল প্রিন্ট করি।
উপসংহার
এই আর্টিকেলে আমরা state ১ এবং ০ সেট করার পদ্ধতি ব্যবহার করে X-এর চেয়ে বড় উপাদান वाले সেগমেন্ট সংখ্যা বের করার সমস্যা সমাধান করেছি। এই প্রোগ্রাম C, Java, Python বা অন্য ভাষায়ও লেখা যায়।