আমাদের একটি যেকোনো আকারের অ্যারে দেওয়া আছে এবং কাজ হলো সেই অ্যারেতে এমন একটি সাবসিকোয়েন্স খুঁজে বের করা যেন সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 হয়।
উদাহরণ
ইনপুট: int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6}
আউটপুট: সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 থাকা সর্বোচ্চ দৈর্ঘ্যের সাবসিকোয়েন্স - 3
ব্যাখ্যা: পার্থক্য 0 বা 1 থাকা সংলগ্ন উপাদানগুলির সাবসিকোয়েন্স হলো {2, 1}। অতএব সর্বোচ্চ দৈর্ঘ্য 2।
ইনপুট: int arr[] = { 2, 1, 7, 6, 5}
আউটপুট: সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 থাকা সর্বোচ্চ দৈর্ঘ্যের সাবসিকোয়েন্স - 3
ব্যাখ্যা: পার্থক্য 0 বা 1 থাকা সংলগ্ন উপাদানগুলির সাবসিকোয়েন্স হলো {7, 6, 5}। অতএব সর্বোচ্চ দৈর্ঘ্য 3।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- পজিটিভ এবং নেগেটিভ উভয় উপাদান ধারণকারী একটি ইন্টিজার অ্যারে ইনপুট নেওয়া।
- অ্যারের আকার নির্ণয় করে অ্যারেটি এবং আকার ফাংশনে পাস করা।
- ইনপুট অ্যারের মতো একই আকারের একটি টেম্পোরারি অ্যারে (temp[size]) এবং maximum ভেরিয়েবল 0 দিয়ে ইনিশিয়ালাইজ করা।
- 0 থেকে size-1 পর্যন্ত লুপ চালানো।
- লুপের ভেতরে temp[i] = 1 সেট করা।
- 1 থেকে size-1 পর্যন্ত আরেকটি লুপ চালানো।
- उस লুপের ভেতরে j = 0 থেকে i-1 পর্যন্ত লুপ চালানো।
- যদি সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 হয় এবং temp[i] < temp[j] + 1 হয়, তবে temp[i] = temp[j] + 1 আপডেট করা।
- 0 থেকে size-1 পর্যন্ত লুপ চালায় maximum আপডেট করা।
- maximum রিটার্ন করা।
- ফলাফল প্রিন্ট করা।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int maximum_adja(int arr[], int size){
int temp[size], maximum = 0;
for (int i=0; i
আউটপুট
Maximum length subsequence with difference between adjacent elements as either 0 or 1 is: 3