কম্পিউটার

C++ এ একটি অ্যারেকে সুন্দর করার জন্য প্রয়োজনীয় ন্যূনতম অপারেশন খুঁজুন


এই সমস্যায়, আমাদেরকে একটি বাইনারি অ্যারে বিন [] দেওয়া হয়েছে যার মধ্যে n বাইনারি মান রয়েছে যা 0 এবং 1 হতে পারে। আমাদের কাজ হল একটি অ্যারেকে সুন্দর করার জন্য প্রয়োজনীয় ন্যূনতম অপারেশনগুলি খুঁজে বের করা।

সুন্দর অ্যারে হল একটি বিশেষ ধরনের বাইনারি অ্যারে যা বিকল্প 0 এবং 1 এর প্যাটার্ন নিয়ে গঠিত।

সমস্যা বর্ণনা − অ্যারেটিকে সুন্দর করার জন্য আমাদের নম্বর অপারেশনগুলি খুঁজে বের করতে হবে। একটি অপারেশন এই ধাপগুলি নিয়ে গঠিত -

ধাপ 1 − অ্যারেটিকে দুই ভাগে কাটুন।

ধাপ 2 − দুটি অর্ধের যেকোনো একটিকে বিপরীত করুন।

ধাপ 3 - যোগদান করুন তারপর অর্ধেক পিছিয়ে দিন।

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

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

bin[] = {1, 0, 1, 0, 0, 1}

আউটপুট

1

ব্যাখ্যা

আমরা অ্যারেটি কেটে ফেলব, একটি সাবারে বিন তৈরি করব [4, 5], এটিকে বিপরীত করব এবং এটিকে আবার যুক্ত করব।

সমাধান পদ্ধতি

সমস্যার সমাধান হল সুইচ অপারেশনের ন্যূনতম সংখ্যা খোঁজার উপর ভিত্তি করে যা ধারাবাহিক শূন্যের সংখ্যার সমান। বেস কেস হল −

অ্যারের আকার 1 হলে, এটি একটি সুন্দর অ্যারে। যদি অ্যারের আকার একটি বিজোড় সংখ্যা হয় তবে এটি কখনই একটি সুন্দর অ্যারে হতে পারে না৷

সমস্ত জোড় দৈর্ঘ্যের জন্য, আমরা ক্রমাগত শূন্য অরোনের মোট সংখ্যা পরীক্ষা করব যা সম্পাদিত অপারেশনের সংখ্যা হবে।

অ্যালগরিদম

শুরু করুন − zeroCount , oneCount, consZero =0

ধাপ 1 − যদি ( n =1), ফেরত 0

ধাপ 2 − যদি (n%2 !=0), রিটার্ন -1।

ধাপ 3 − i -> 0 থেকে n-1 এর জন্য লুপ।

ধাপ ৩.১ − if bin[i] ==bin[i+1] ==0, consZero++।

পদক্ষেপ 4৷ − if bin[n-1] ==bin[0] ==0, consZero++।

ধাপ 5 - কনসজিরো ফেরত দিন।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include <iostream>
using namespace std;
int minOperations(int bin[], int n) {
   if(n == 1)
      return 0;
   if(n%2 != 0)
      return -1;
      int consZero = 0;
   for (int i = 0; i < n; ++i) {
      if (i + 1 < n) {
         if (bin[i] == 0 && bin[i + 1] == 0)
            consZero++;
      }
   }
   if (bin[0] == bin[n - 1] && bin[0] == 0)
      consZero++;
      return consZero;
}
int main() {
   int bin[] = { 1, 0, 1, 0, 0, 1};
   int n = sizeof(bin) / sizeof(bin[0]);
   cout<<"The minimum operations needed to make an Array beautiful is "<<minOperations(bin, n);
   return 0;
}

আউটপুট

The minimum operations needed to make an Array beautiful is 1

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

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

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

  4. পাইথন ব্যবহার করে অ্যারে সমান করতে ন্যূনতম অপারেশন খুঁজে বের করার প্রোগ্রাম