কম্পিউটার

C++ এ K ধারাবাহিক সংখ্যার সেটে অ্যারে ভাগ করুন


ধরুন আমাদের কাছে পূর্ণসংখ্যার একটি অ্যারে এবং একটি ধনাত্মক পূর্ণসংখ্যা k আছে, আমাদের খুঁজে বের করতে হবে এই অ্যারেটিকে k ধারাবাহিক সংখ্যার সেটে ভাগ করা সম্ভব কিনা। তাই যদি সম্ভব হয় তাহলে আমাদের True ফেরত দিতে হবে অন্যথায় False ফেরত দিতে হবে। সুতরাং ইনপুট যদি [1,2,3,3,4,4,5,6] এবং k =4 এর মত হয় তবে আউটপুট সত্য হবে। এর কারণ হল, আমরা অ্যারেটিকে এভাবে ভাগ করতে পারি যে [1,2,3,4] এবং [3,4,5,6]

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

  • একটি মানচিত্র m তৈরি করুন, n :=সংখ্যা বিন্যাসের আকার সেট করুন
  • প্রতিটি উপাদানের জন্য e সংখ্যায়
    • m[e] 1 দ্বারা বাড়ান
  • cnt :=0
  • সংখ্যা অ্যারে সাজান
  • আমি 0 থেকে n
      পরিসরে
    • x :=সংখ্যা[i]
    • যদি m[x – 1] =0 এবং m[x]> 0
      • l :=k
      • যখন k> 0
        • যদি m[x]> 0 হয়, তাহলে m[k] এর মান 1 কমিয়ে দিন, অন্যথায় মিথ্যা ফেরত দিন
        • x এবং cnt 1 দ্বারা বাড়ান এবং k কে 1 দ্বারা হ্রাস করুন
      • k :=l
  • সত্য ফেরত যখন cnt =n, অন্যথায় মিথ্যা

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool isPossibleDivide(vector<int>& nums, int k) {
      map <int, int> m;
      int n = nums.size();
      for(int i = 0; i < n; i++){
         m[nums[i]]++;
      }
      int cnt = 0;
      sort(nums.begin(), nums.end());
      for(int i = 0; i < n; i++){
         int x = nums[i];
         if(m[x - 1] == 0 && m[x] > 0){
            int l = k;
            while(k>0){
               if(m[x] > 0){
                  m[x]--;
            } else return false;
               x++;
               k--;
               cnt++;
            }
            k = l;
         }
      }
     return cnt == n;
   }
};
main(){
   vector<int> v = {1,2,3,3,4,4,5,6};
   Solution ob;
   cout << (ob.isPossibleDivide(v, 4));
}

ইনপুট

[1,2,3,3,4,4,5,6]
4

আউটপুট

1

  1. C++ এ সংখ্যার বিন্যাসের গুণফলের প্রথম সংখ্যা

  2. সর্বোচ্চ নং C++ এ একটি অ্যারেতে সংলগ্ন প্রাইম সংখ্যা

  3. C++ এ একটি বাইনারি সার্কুলার অ্যারেতে সর্বাধিক পরপর একজনের (বা শূন্য)

  4. C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল