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

C++-এ 0 বা 1 পার্থক্যের সাথে সর্বোচ্চ দৈর্ঘ্যের সাবসিকোয়েন্স

আমাদের একটি যেকোনো আকারের অ্যারে দেওয়া আছে এবং কাজ হলো সেই অ্যারেতে এমন একটি সাবসিকোয়েন্স খুঁজে বের করা যেন সংলগ্ন উপাদানগুলির পার্থক্য 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
  1. C++-এ Maximum Difference Between Node and Ancestor

  2. C++-এ দেওয়া যোগফলের সাথে সর্বোচ্চ আকারের সাবসেট

  3. C++-এ অসুন্দর সংখ্যা (Ugly Numbers) ধারণকারী সাব-অ্যারের সর্বোচ্চ দৈর্ঘ্য

  4. C++-এ ০ বা n মান ধারণকারী ম্যাট্রিক্সের সর্বোচ্চ ডিটারমিন্যান্ট