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

C++-এ একটি স্ট্রিং-এর সাবসিকোয়েন্স যা অন্য স্ট্রিং-এর সাবস্ট্রিং, তার সর্বোচ্চ দৈর্ঘ্য


মান লেইয়া দুটি স্ট্রিং X এবং Y, আমাদের X-এর সবচেয়ে বড় সাবসিকোয়েন্স (subsequence) খুঁজে বের করতে হবে যা Y-তে সাবস্ট্রিং (substring) হিসেবে আছে। উদাহরণস্বরূপ, X = "ABCD" এবং Y = "BACDBDCD" হলে আউটপুট হবে ৩। কারণ "ACD" হলো X-এর সবচেয়ে বড় সাবসিকোয়েন্স যা Y-তে সাবস্ট্রিং।

এটি সমাধানের জন্য ডাইনামিক প্রোগ্রামিং (DP) অ্যাপ্রোচ ব্যবহার করব। যদি X-এর দৈর্ঘ্য n এবং Y-এর দৈর্ঘ্য m হয়, তবে (m+1)x(n+1) আকারের DP অ্যারে তৈরি করব। DP[i, j]-এর মান হবে X[0...j]-এর সর্বোচ্চ দৈর্ঘ্যের সাবসিকোয়েন্স যা Y[0...i]-এ সাবস্ট্রিং। প্রতিটি DP সেলের জন্য নিচের নিয়ম মেনে চলবে:

  • i = 1 থেকে m পর্যন্ত:
    • j = 1 থেকে n পর্যন্ত
      • যদি X[i - 1] == Y[j - 1] হয়, তবে DP[i, j] := 1 + DP[i - 1, j - 1]
      • অন্যথায় DP[i, j] := DP[i, j - 1]

অবশেষে X-এর সাবসিকোয়েন্স যা Y-তে সাবস্ট্রিং, তার দৈর্ঘ্য হবে max(DP[i, n]), যেখানে 1 <= i <= m।

উদাহরণ

#include<iostream> #define MAX 100 using namespace std; int maxSubLength(string x, string y) {    int table[MAX][MAX];    int n = x.length();    int m = y.length();    for (int i = 0; i <= m; i++)       for (int j = 0; j <= n; j++)    table[i][j] = 0;    for (int i = 1; i <= m; i++) {       for (int j = 1; j <= n; j++) {          if (x[j - 1] == y[i - 1])             table[i][j] = 1 + table[i - 1][j - 1];          else             table[i][j] = table[i][j - 1];       }    }    int ans = 0;    for (int i = 1; i <= m; i++)    ans = max(ans, table[i][n]);    return ans; } int main() {    string x = "ABCD";    string y = "BACDBDCD";    cout << "Length of Maximum subsequence substring is: " << maxSubLength(x, y); }

আউটপুট

Length of Maximum subsequence substring is: 3

  1. C++-এ সাবস্ট্রিংকে অন্য সাবস্ট্রিং দিয়ে রিপ্লেস করা

  2. স্ট্রিংয়ের দৈর্ঘ্য (Length) বের করার C++ প্রোগ্রাম

  3. পাইথনে একটি স্ট্রিং-এ সর্বোচ্চ দৈর্ঘ্যের পুনরাবৃত্ত সাবস্ট্রিং খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে বাইনারি স্ট্রিং-এ একটি ০ ফ্লিপ করে ১-এর সর্বোচ্চ কন্টiguous সাবস্ট্রিং খুঁজে বের করার প্রোগ্রাম