সমস্যা বিবৃতি
'n' আকারের একটি স্ট্রিং দেওয়া হয়েছে। কাজটি হল স্ট্রিং প্যালিনড্রোম তৈরি করতে ন্যূনতম সংখ্যক অক্ষর মুছে ফেলা।
যদি প্রদত্ত স্ট্রিংটি "abcda" হয় তবে আমরা এটিকে একটি প্যালিনড্রোম করতে প্রথম এবং শেষ ব্যতীত যেকোনো 2টি অক্ষর মুছে ফেলতে পারি।
-
যদি আমরা 'b' এবং 'c' অক্ষর মুছে ফেলি তাহলে "ada" স্ট্রিং হল একটি প্যালিনড্রোম
-
যদি আমরা 'c' এবং 'd' অক্ষর মুছে ফেলি তাহলে "aba" স্ট্রিং হল একটি প্যালিনড্রোম
-
যদি আমরা 'b' এবং 'd' অক্ষর মুছে ফেলি তাহলে "aca" স্ট্রিং হল একটি প্যালিনড্রোম
অ্যালগরিদম
<পূর্ব>1. প্রদত্ত স্ট্রিং এর দীর্ঘতম প্যালিনড্রোমিক অনুক্রম খুঁজুন। আসুন এটিকে "lpsSize" হিসাবে বলি।2। মুছে ফেলার জন্য সর্বনিম্ন অক্ষর =(স্ট্রিংয়ের দৈর্ঘ্য – lpsSize) কোড।উদাহরণ
#include#include namespace ব্যবহার করে std;int lps(স্ট্রিং s, int i, int j){ if (i ==j) { রিটার্ন 1; } যদি (s[i] ==s[j] &&i + 1 ==j) { রিটার্ন 2; } যদি (s[i] ==s[j]) { ফেরত lps(s, i + 1, j - 1) + 2; } রিটার্ন max(lps(s, i, j - 1), lps(s, i + 1, j));}int minDeletion(string s){ int n =s.size(); int lpsSize =lps(s, 0, n); রিটার্ন (n - lpsSize);}int main(){ cout <<"মুছে ফেলার সর্বনিম্ন অক্ষর =" < আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেমোছার সর্বনিম্ন অক্ষর =2