কম্পিউটার

C++ ব্যবহার করে পুরো অ্যারেকে শক্তিশালী করতে পাওয়ার ধার দিতে ন্যূনতম 1s


আমাদের একটি বাইনারি অ্যারে দেওয়া হয়েছে যা যেকোনো প্রদত্ত আকারের ডিজিট 1 এবং 0 এবং একটি পূর্ণসংখ্যা ভেরিয়েবল সঞ্চয় করতে পারে, ধরা যাক, বেস। কাজটি হল ন্যূনতম 1 এর গণনা করা যা একটি বাইনারি অ্যারের অন্যান্য উপাদানগুলিতে শক্তি দিতে পারে যাতে পুরো অ্যারেটি শক্তিশালী হয়ে ওঠে। একটি উপাদান তার সংলগ্ন উপাদান বা বেস থেকে কম দূরত্বের মধ্যে অন্য কোনো উপাদানকে শক্তি দিতে পারে।

আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -

- মধ্যে int arr[] ={1, 1, 0, 1, 1, 0, 1}, int base =7

আউট − সম্পূর্ণ অ্যারেকে শক্তিশালী করতে পাওয়ার ধার দেওয়ার জন্য ন্যূনতম 1s হল:1

ব্যাখ্যা - আমাদেরকে 7 আকারের একটি বাইনারি অ্যারে দেওয়া হয়েছে এবং 7 হিসাবে ভিত্তির একটি মান দেওয়া হয়েছে যার অর্থ প্রথম সম্মুখীন হওয়া সংখ্যা 1 পুরো অ্যারেকে শক্তি দিতে পারে। অতএব, অঙ্ক 1 at arr[1] একটি অ্যারের অন্যান্য সমস্ত উপাদানকে শক্তি দিতে পারে।

- মধ্যে int arr[] ={1, 1, 0, 1, 1, 0, 1}, int base =3

আউট - সম্পূর্ণ অ্যারেকে শক্তিশালী করতে পাওয়ার ধার দেওয়ার জন্য ন্যূনতম 1s হল:2

ব্যাখ্যা - আমাদেরকে 7 আকারের একটি বাইনারি অ্যারে দেওয়া হয়েছে এবং 2 হিসাবে ভিত্তির একটি মান দেওয়া হয়েছে যার অর্থ প্রথম সম্মুখীন সংখ্যা 1 একটি অ্যারের পরবর্তী দুটি উপাদানকে শক্তি দিতে পারে। তাই, অঙ্ক 1 at arr[2] একটি অ্যারের পরবর্তী দুটি উপাদানকে শক্তি দিতে পারে এবং আরেকটি অ্যারে [5] একটি অ্যারের পরবর্তী দুটি উপাদানকে শক্তি দিতে পারে যা পুরো অ্যারেটিকে শক্তিশালী করে তোলে৷

- মধ্যে int arr[] ={1, 1, 0, 1, 1, 0, 1}, int base =1

আউট - সম্পূর্ণ অ্যারেকে শক্তিশালী করা অসম্ভব

ব্যাখ্যা - আমাদেরকে 7 আকারের একটি বাইনারি অ্যারে দেওয়া হয়েছে এবং 1 হিসাবে ভিত্তির একটি মান দেওয়া হয়েছে যার অর্থ প্রথম সম্মুখীন সংখ্যা 1 একটি অ্যারের পরবর্তী একক উপাদানকে শক্তি দিতে পারে। অতএব, সমগ্র অ্যারেকে শক্তিশালী করা অসম্ভব।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি হল -

  • যেকোনো প্রদত্ত আকারের একটি বাইনারি অ্যারে ইনপুট করুন এবং একটি পূর্ণসংখ্যা ভেরিয়েবল ধরা যাক, ভিত্তি

  • একটি অ্যারের আকার গণনা করুন এবং একটি ভেরিয়েবল ঘোষণা করুন, ধরা যাক, পূর্ণসংখ্যার প্রকারের ভাল

  • একটি ফাংশনে কলের সাথে ভ্যাল সেট করুন যা একটি শক্তিশালী অ্যারে তৈরি করতে প্রয়োজনীয় ন্যূনতম 1 প্রদান করবে এবং যদি এটি সম্ভব না হয় তবে এটি একটি -1 প্রদান করবে যা আরও একটি ত্রুটি বার্তা প্রদর্শন করবে৷

  • Lend_Power(int arr[], int size, int base)

    ফাংশনের ভিতরে
    • একটি বাইনারি অ্যারের আকার সহ পূর্ণসংখ্যার ধরণের মানগুলির একটি অ্যারে ঘোষণা করুন৷

    • একটি অস্থায়ী পরিবর্তনশীলকে টেম্প হিসাবে ঘোষণা করুন এবং এটিকে -1 এ সেট করুন এবং গণনা করুন এবং এটি 0 এ সেট করুন।

    • একটি অ্যারের আকার পর্যন্ত i থেকে 0 পর্যন্ত লুপ শুরু করুন। লুপের ভিতরে, চেক করুন IF arr[i] সমান 1 তারপর temp সেট করুন i হিসাবে এবং arr_2[i] কে temp হিসাবে সেট করুন

    • 0 থেকে একটি অ্যারের আকার পর্যন্ত FOR লুপ শুরু করুন এবং reset_base হিসাবে i + base - 1 এবং reset_size আকার - 1 হিসাবে সেট করুন। arr_2[min(reset_base, reset_size)] হিসাবে একটি ভেরিয়েবল সেট করুন।

    • IF সেট =-1 বা সেট + বেস <=i তারপরে -1

      রিটার্ন করুন
    • পরিবর্তনশীল 'i' কে সেট + বেস হিসাবে সেট করুন।

  • রিটার্ন গণনা।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;

int Lend_Power(int arr[], int size, int base)
{
   int arr_2[size];
   int temp = -1;
   int count = 0;
   for(int i = 0; i < size; i++)
   {
      if(arr[i] == 1)
      {
         temp = i;
      }
      arr_2[i] = temp;
   }
   for(int i = 0; i < size;)
   {
      int reset_base = i + base - 1;
      int reset_size = size - 1;

      int set = arr_2[min(reset_base, reset_size)];
      if(set == -1 || set + base <= i)
      {
         return -1;
      }
      i = set + base;
      count++;
   }
   return count;
}
int main()
{
   int arr[] = {1, 1, 0, 1, 1, 0, 1};
   int base = 2;
   int size = sizeof(arr) / sizeof(arr[0]);
   int val = Lend_Power(arr, size, base);
   if(val == -1)
   {
      cout<<"Impossible to make entire array powerful";
   }
   else
   {
      cout<<"Minimum 1s to lend power to make whole array powerful are: "<<val;
   }
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউট তৈরি করবে

Minimum 1s to lend power to make whole array powerful are: 3

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

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

  3. STL ব্যবহার করে C++ এ অ্যারে পণ্য

  4. আমি কিভাবে নতুন ব্যবহার করে C++ এ একটি 2d ​​অ্যারে ঘোষণা করব