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

C++ ব্যবহার করে অ্যারের সব এলিমেন্ট ০ করার ন্যূনতম অপারেশন সংখ্যা

সমস্যা বিবরণ

N আকারের একটি অ্যারে দেওয়া আছে যার প্রতিটি এলিমেন্ট হয় ১ বা ০। সব এলিমেন্টকে শূন্য করতে ন্যূনতম কতগুলো অপারেশন দরকার তা বের করতে হবে। নিচের অপারেশনগুলো করা যাবে:

যদি কোনো এলিমেন্ট ১ হয়, তাহলে সেটিকে ০ করতে পারেন, এরপর:

  • যদি পরবর্তী 연속 এলিমেন্ট ১ হয়, তবে সেটিও স্বয়ংক্রিয়ভাবে ০ হয়ে যাবে
  • যদি পরবর্তী এলিমেন্ট ইতিমধ্যে ০ হয়, তবে কিছুই হবে না
যদি arr[] = {1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1} হয়, তবে ৪টি অপারেশন দরকার

এলগরিদম

1. যদি বর্তমান এলিমেন্ট ১ হয়, তবে কাউন্ট বাড়ান এবং পরবর্তী ০ খুঁজুন কারণ সব kontinuous ১-গুলো স্বয়ংক্রিয়ভাবে ০ হয়ে যাবে
2. চূড়ান্ত কাউন্ট রিটার্ন করুন

উদাহরণ কোড

#include <iostream>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;

int performMinOperation(int *arr, int n) {
    int i, cnt = 0;
    for (i = 0; i < n; ++i) {
        if (arr[i] == 1) {
            int j;
            for (j = i + 1; j < n; ++j) {
                if (arr[j] == 0) {
                    break;
                }
            }
            i = j - 1;
            ++cnt;
        }
    }
    return cnt;
}

int main() {
    int arr[] = {1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1};
    cout << "Minimum required operations = " << performMinOperation(arr, SIZE(arr)) << endl;
    return 0;
}

আউটপুট

প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট পাওয়া যাবে:

Minimum required operations = 4
  1. C++ ব্যবহার করে অ্যারে 'ভালো' করার জন্য ন্যূনতম এলিমেন্ট অপসারণ

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

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

  4. পাইথনে অ্যারে সব উপাদান সমান করার জন্য অপারেশনের সংখ্যা