কম্পিউটার

C++ এ একটি অ্যারে অপসারণের জন্য ন্যূনতম অপারেশন প্রয়োজন


বিবরণ

N এর একটি অ্যারে দেওয়া হয়েছে৷ পূর্ণসংখ্যা যেখানে N একটি জোড় সংখ্যা। অ্যারেতে দুই ধরনের ক্রিয়াকলাপ অনুমোদিত৷

  • একটি অ্যারের যেকোনো উপাদানের মান 1 দ্বারা বৃদ্ধি করুন।
  • যদি অ্যারের দুটি সন্নিহিত উপাদান পরপর মৌলিক সংখ্যা হয়, তাহলে উভয় উপাদান মুছে দিন।

কাজটি হল অ্যারের সমস্ত উপাদান অপসারণের জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করা৷

উদাহরণ

যদি অ্যারে হয় {10, 13} তাহলে ন্যূনতম 2টি অপারেশন প্রয়োজন

  • বৃদ্ধি ১ st 1 দ্বারা একটি অ্যারের উপাদান। তাই নতুন অ্যারে হয়ে যায় {11, 13}
  • 1 st মুছুন এবং 2 nd উভয়ই ধারাবাহিক মৌলিক সংখ্যা হিসাবে উপাদান

অ্যালগরিদম

<পূর্ব>1. সংখ্যাগুলি অপসারণ করতে, আমাদের অবশ্যই দুটি সংখ্যাকে দুটি পরপর প্রাইমে রূপান্তর করতে হবে৷2৷ ধরা যাক a এবং b পরপর মৌলিক সংখ্যা তাহলে আমরা প্রাইম সংখ্যার প্রাক-কম্পিউট করার জন্য Eratosthenes-এর চালনি ব্যবহার করি এবং তারপর array3 ব্যবহার করে a এর থেকে বড় নয় এবং p এর থেকে বড় প্রথমটি বের করি। একবার এই গণনাটি সম্পন্ন হলে সমস্যা সমাধানের জন্য ডায়নামিক প্রোগ্রামিং ব্যবহার করুন

উদাহরণ

#include #include #include  namespace ব্যবহার করে std;int minimumPrefixReversals(int *a, int n) { string start =""; স্ট্রিং গন্তব্য ="", t, r; জন্য (int i =0; i > qu; pair p; qu.push(make_pair(start, 0)); যদি (শুরু ==গন্তব্য) { ফেরত 0; } যখন (!qu.empty()) { p =qu.front(); t =p.first; qu.pop(); for (int j =2; j <=n; j++) { r =t; বিপরীত (r.begin(), r.begin() + j); if (r ==গন্তব্য) { ফেরত p.second + 1; } qu.push(make_pair(r, p.second + 1)); } }} int main() { int a[] ={ 1, 2, 4, 3 }; int n =sizeof(a) / sizeof(a[0]); cout <<"সর্বনিম্ন বিপরীত:" < 

আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট তৈরি করে:

আউটপুট

সর্বনিম্ন বিপরীত:3

  1. C++ ব্যবহার করে অ্যারের সমস্ত উপাদান মুছে ফেলার জন্য ন্যূনতম সংখ্যক অপারেশন প্রয়োজন।

  2. C++-এ অ্যারের GCD-কে k-এর গুণিতক করার জন্য ন্যূনতম ক্রিয়াকলাপ

  3. C++ এ একটি কো-প্রাইম অ্যারে তৈরি করতে ন্যূনতম সন্নিবেশ

  4. C++-এ অ্যারের সমস্ত উপাদান একই করতে ন্যূনতম ডিলিট অপারেশন।