একটি ইন্টিজার এলিমেন্ট বিশিষ্ট অ্যারে দেওয়া আছে। কাজ হল প্রথমে অ্যারেটি থেকে সাবঅ্যারে বের করা এবং তারপর চেক করা সাবঅ্যারেতে এলিমেন্টগুলো স্ট্রিক্টলি ইনক্রিজিং অর্ডারে আছে কিনা। হ্যাঁ হলে সাবঅ্যারেটি গণনা করুন।
এপ্রোচটি হলো: যদি ০তম এবং ১তম পজিশনের এলিমেন্ট ইনক্রিজিং অর্ডারে না থাকে তবে সাবঅ্যারে আর চেক করা বন্ধ করুন।
উদাহরণ
ইনপুট: int a[] = {1, 7, 5}
আউটপুট: স্ট্রিক্টলি ইনক্রিজিং সাবঅ্যারে সংখ্যা: ১
ব্যাখ্যা - সম্ভাব্য সাবঅ্যারেগুলো: {1,7,5}, {1,7}, {7,5}। এমধ্যে শুধু {1,7} স্ট্রিক্টলি ইনক্রিজিং।
ইনপুট: int a[] = {1, 2, 7, 10}
আউটপুট: স্ট্রিক্টলি ইনক্রিজিং সাবঅ্যারে সংখ্যা: ৬
ব্যাখ্যা - সম্ভাব্য সাবঅ্যারেগুলো: {1,2}, {1,2,7}, {1,2,7,10}, {2,7}, {2,7,10}, {7,10}। সবই স্ট্রিক্টলি ইনক্রিজিং।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- অ্যারে ডিক্লেয়ার করে এলিমেন্ট ইনপুট নিন এবং
countIncSubarrays(a, a.length)ফাংশনে পাস করুন। - ফাংশন ভিতরে কাউন্ট ফ্ল্যাগ ইনিশিয়ালাইজ করুন।
- i=0 থেকে অ্যারে দৈর্ঘ্য পর্যন্ত FOR লুপ।
- ভিতরে j=i+1 থেকে অ্যারে দৈর্ঘ্য পর্যন্ত FOR লুপ।
- যদি
a[j] > a[j-1]হয় তবে কাউন্ট বাড়ান, অন্যথায় ব্রেক করুন। - মেইন ফাংশনে ফলাফল প্রিন্ট করুন।
উদাহরণ কোড (Java)
import java.util.*;
class testqwe {
static int MAX = 4;
static int a[] = new int[MAX];
static Scanner scan = new Scanner(System.in);
static int countIncSubarrays(int a[], int n) {
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (a[j] > a[j - 1]) count++;
else break;
}
}
return count;
}
public static void main(String[] args) {
for (int i = 0; i < a.length; i++) {
a[i] = scan.nextInt(); //1,2,7,0
}
int result = countIncSubarrays(a, a.length);
System.out.println("Count of strictly increasing subarrays is " + result);
}
}
উপরের কোড রান করলে নিচের আউটপুটটি পাওয়া যাবে:
আউটপুট
Count of strictly increasing subarrays is 6