বিবরণ
যথাক্রমে m এবং n আকারের দুটি স্ট্রিং str1 এবং str2 দেওয়া হয়েছে। কাজটি হল str1 থেকে/এ ন্যূনতম সংখ্যক অক্ষর মুছে ফেলা এবং সন্নিবেশ করা যাতে এটিকে str2 তে রূপান্তর করা যায়।
Str1 =“tutorialspoint”Str2 =“tutorials”str1 থেকে str2 রূপান্তর করতে আমাদের str1 থেকে পাঁচটি অক্ষর অর্থাৎ “পয়েন্ট” মুছে ফেলতে হবে।
অ্যালগরিদম
<পূর্ব>1. str1 এবং str2-এর দীর্ঘতম সাধারণ অনুক্রম খুঁজুন। আসুন এটিকে "lcsSize" 2 হিসাবে বলি। মুছে ফেলা অক্ষরের সংখ্যা =(str1 - lcsSize এর দৈর্ঘ্য)3. ঢোকানো অক্ষরের সংখ্যা =(str2 - lcsSize এর দৈর্ঘ্য)উদাহরণ
#include#include namespace ব্যবহার করে std;int lcs(string s1, string s2, int m, int n){ if (m ==0 || n ==0) { ফেরত 0; } যদি (s1[m - 1] ==s2[n - 1]) { রিটার্ন 1 + lcs(s1, s2, m - 1, n - 1); } else { রিটার্ন max(lcs(s1, s2, m, n - 1), lcs(s1, s2, m - 1, n)); }} void minDeletionAndInsertion(string s1, string s2){ int m =s1.size(); int n =s2.size(); int lcsSize =lcs(s1, s2, m, n); cout <<"মিনিট অপসারণ =" <<(m - lcsSize) < আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেসর্বনিম্ন মুছে ফেলা =5মিনিট সন্নিবেশ =0