কম্পিউটার

C++ এ একাধিক যোগফল দিয়ে টার্গেট অ্যারে তৈরি করুন


ধরুন আমাদের লক্ষ্য পূর্ণসংখ্যার একটি অ্যারে আছে। সমস্ত 1 এর সমন্বয়ে গঠিত একটি প্রারম্ভিক অ্যারে A থেকে, আমরা নিম্নলিখিত পদ্ধতিটি সম্পাদন করতে পারি -

  • এখন আমাদের অ্যারেতে থাকা সমস্ত উপাদানের যোগফল x কে বিবেচনা করুন।

  • সূচক i বেছে নিন, 0 থেকে n পরিসরে, যেখানে n হল অ্যারের আকার এবং সূচী i থেকে x এ A-এর মান সেট করুন।

  • আমরা যতবার প্রয়োজন ততবার এই পদ্ধতিটি পুনরাবৃত্তি করতে পারি।

A থেকে টার্গেট অ্যারে তৈরি করা সম্ভব কিনা তা আমাদের পরীক্ষা করতে হবে অন্যথায় False রিটার্ন করুন।

সুতরাং, যদি ইনপুটটি [3,9,5] এর মত হয়, তাহলে আউটপুটটি True হবে, যেমন আমরা ইনডেক্স [1,1,1] দিয়ে শুরু করতে পারি, তারপর সূচক 0 এ যোগফল 3 হয়, তারপর অ্যারেটি [3] ,1,1], তারপর যোগফল হল 5, সূচক 2 এ, তারপর অ্যারে হল [3,1,5], তারপর যোগফল হল 9, সূচক 1 এ, সুতরাং অ্যারে হল [3,9,5]৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যোগফল :=0

  • n :=লক্ষ্যের আকার

  • আরম্ভ করার জন্য i :=0, যখন i

    • যোগফল :=যোগফল + লক্ষ্য[i]

  • অগ্রাধিকার সারি pq সংজ্ঞায়িত করুন, এবং লক্ষ্য অ্যারে দিয়ে এটি শুরু করুন

  • pq> যোগফলের শীর্ষ উপাদান, −

    করুন
    • x :=pq

      এর শীর্ষ উপাদান
    • pq

      থেকে উপাদান মুছুন
    • 2 * x - pq এ যোগ করুন

    • যোগফল :=x

  • যোগফল টার্গেটের আকারের সমান হলে true ফেরত দিন, অন্যথায় মিথ্যা

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
   public:
   bool isPossible(vector<int>& target) {
      lli sum = 0;
      int n = target.size();
      for (int i = 0; i < n; i++) {
         sum += target[i];
      }
      priority_queue<int> pq(target.begin(), target.end());
      while (pq.top() * 2 > sum) {
         int x = pq.top();
         pq.pop();
         pq.push(2 * x - sum);
         sum = x;
      }
      return sum == (int)target.size();
   }
};
main(){
   Solution ob;
   vector<int> v = {3,9,5};
   cout << (ob.isPossible(v));
}

ইনপুট

{3,9,5}

আউটপুট

1

  1. C++ STL-এ অ্যারের যোগফল

  2. C++ এ পরম পার্থক্যের ন্যূনতম যোগফল সহ অ্যারে উপাদান?

  3. C++ সাম অ্যারে ধাঁধা

  4. C++ এ একটি সমষ্টি অ্যারে ধাঁধা?