কম্পিউটার

C++-এ তারা যে গোষ্ঠীর আকারের প্রদত্ত লোকেদের গোষ্ঠীবদ্ধ করুন


ধরুন n লোক আছে যাদের আইডি 0 থেকে n - 1 রেঞ্জের মধ্যে এবং প্রতিটি ব্যক্তি ঠিক একটি গ্রুপের অন্তর্গত। আমাদের দৈর্ঘ্য n এর অ্যারে গ্রুপ সাইজ আছে। এই অ্যারেটি নির্দেশ করছে যে প্রতিটি ব্যক্তি যে গোষ্ঠীর আকারের অন্তর্গত, আমাদের সেখানে যে গোষ্ঠীগুলি রয়েছে এবং প্রতিটি গোষ্ঠীর অন্তর্ভুক্ত লোকের আইডিগুলি খুঁজে বের করতে হবে৷

ধরুন ইনপুট হল − [3,3,3,3,3,1,3], তাহলে আউটপুট হল [[5], [0, 1, 2], [3, 4, 6]], অন্যান্য সম্ভাব্য সমাধান হতে পারে [[2,1,6],[5], [0,4,3]] বা [[5], [0,6,2], [4,3,1]]

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

  • একটি মানচিত্র তৈরি করুন m
  • এর জন্য 0 থেকে প্রদত্ত অ্যারের আকার - 1
      পরিসরে
    • m[g[i]] এ ঢোকান
  • রেস নামে একটি ম্যাট্রিক্স তৈরি করুন
  • প্রতিটি উপাদানের জন্য i মানচিত্রে m
      i
        -এ উপস্থিত তালিকার আকার 0 থেকে সীমার মধ্যে j-এর জন্য
      • temp-এ i-এর অ্যারের jth উপাদান সন্নিবেশ করান
      • যদি temp এর আকার =i
          এর কী
        • তারপর নতুন সারি হিসাবে res-এ temp সন্নিবেশ করুন
        • টেম্প অ্যারে সাফ করুন
  • রিটার্ন রিটার্ন।

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

উদাহরণ

#include  namespace ব্যবহার করে std;void print_vector(vector> v){ cout <<"["; for(int i =0; i> groupThePeople(vector&g) { মানচিত্র > m; for(int i =0; i > res; মানচিত্র > ::পুনরাবৃত্তিকারী i =m.begin(); ভেক্টর  temp; while(i !=m.end()){ for(int j =0; j second.size(); j++){ temp.push_back(i->সেকেন্ড[j]); if(temp.size() ==i->first){ res.push_back(temp); temp.clear(); } } i++; } রিটার্ন রিটার্ন; }};প্রধান(){ ভেক্টর v ={3,3,3,3,3,1,3}; সমাধান ob; print_vector(ob.groupThePeople(v));}

ইনপুট

[3,3,3,3,3,1,3]

আউটপুট

<প্রে>[[5, ],[0, 1, 2, ],[3, 4, 6, ],]
  1. C++ এ একটি গ্রিডে প্রদত্ত দিকের সম্ভাব্য চালগুলি গণনা করুন

  2. C++ এ ধাঁধা III

  3. বিন প্যাকিং অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. C++ স্ট্যান্ডার্ডে int, লং টাইপের আকার কী?