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

C++-এ একটি অ্যারে সুন্দর बनाने के জন্য ন্যূনতম অপারেশন খুঁজুন

এই সমস্যায়, আমাদের একটি বাইনারি অ্যারে bin[] দেওয়া আছে যাতে n সংখ্যক বাইনারি মান (০ এবং ১) থাকে। আমাদের কাজ হলো অ্যারেটিকে "সুন্দর" बनाने জন্য ন্যূনতম অপারেশন খুঁজে বের করা।

সুন্দর অ্যারে

সুন্দর অ্যারে হলো একটি বিশেষ ধরনের বাইনারি অ্যারে যাতে ০ এবং ১ বান্ধবভাবে সাজানো থাকে।

সমস্যা বিবরণ

অ্যারেটিকে সুন্দর করার জন্য কতগুলো অপারেশন দরকার তা খুঁজে বের করতে হবে। একটি অপারেশন নিম্নলিখিত ধাপগুলো ধারণ করে:

  • ধাপ ১ - অ্যারেটিকে দুটি 반ে ভাগ করুন।
  • ধাপ ২ - দুটি نصفের যেকোনো একটি উল্টে দিন।
  • ধাপ ৩ - তাদের আবার জোড়া দিন।

আমরা অপারেশন সংখ্যা গণনা করব যাতে অ্যারেটি সুন্দর হয়ে যায়।

উদাহরণ

ইনপুট

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

আউটপুট

1

ব্যাখ্যা

আমরা অ্যারেটি কাটব, bin[4, 5] সাবঅ্যারেটি উল্টে দিব এবং আবার জোড়া দিব।

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

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

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

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

আলগরিদম

  1. শূন্য গণনা, এক গণনা, ধারাবাহিক শূন্য = 0 আরম্ভ করুন।
  2. যদি (n == 1), 0 ফেরত দিন।
  3. যদি (n%2 != 0), -1 ফেরত দিন।
  4. i = 0 থেকে n-1 পর্যন্ত লুপ চালান।
  5. যদি bin[i] == bin[i+1] == 0 হয়, তবে ধারাবাহিক শূন্য++।
  6. যদি bin[n-1] == bin[0] == 0 হয়, তবে ধারাবাহিক শূন্য++।
  7. ধারাবাহিক শূন্য ফেরত দিন।

C++ প্রোগ্রাম উদাহরণ

#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. Python দিয়ে অ্যারে সমান করার জন্য মিনিমাম অপারেশন বের করার প্রোগ্রাম