কম্পিউটার

C++ এ উপসেট II


ধরুন আমাদের সংখ্যার একটি সেট আছে; আমাদের সেই সেটের সমস্ত সম্ভাব্য উপসেট তৈরি করতে হবে। এটি পাওয়ার সেট নামেও পরিচিত। আমাদের মনে রাখতে হবে উপাদানগুলো সদৃশ হতে পারে। সুতরাং সেটটি যদি [1,2,2] এর মত হয় তবে পাওয়ার সেটটি হবে [[], [1], [2], [1,2], [2,2], [1,2,2] ]]

আসুন ধাপগুলো দেখি -

  • একটি অ্যারের রেস এবং x নামক আরেকটি সেট সংজ্ঞায়িত করুন
  • আমরা পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করে এটি সমাধান করব। তাই যদি পুনরাবৃত্ত পদ্ধতির নাম বলা হয় solve(), এবং এটি সূচক, একটি অস্থায়ী অ্যারে এবং সংখ্যার অ্যারে (সংখ্যা) নেয়
  • সলভ() ফাংশন নিচের মত কাজ করবে -
  • যদি সূচক =v এর আকার, তাহলে
    • যদি x-এ temp উপস্থিত না থাকে, তাহলে res-এ temp সন্নিবেশ করান এবং x-এ temp সন্নিবেশ করান
    • প্রত্যাবর্তন
  • কল সমাধান (index + 1, temp, v)
  • টেম্পে v[index] ঢোকান
  • কল সমাধান (index + 1, temp, v)
  • টেম্প থেকে শেষ উপাদানটি সরান
  • প্রধান ফাংশনটি নিচের মত হবে -
  • res এবং x সাফ করুন, এবং প্রদত্ত অ্যারে সাজান, একটি অ্যারের তাপমাত্রা সংজ্ঞায়িত করুন
  • কল সমাধান (0, টেম্প, অ্যারে)
  • রেস অ্যারে সাজান এবং রিটার্ন রিটার্ন করুন

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

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;void print_vector(vector> v){ cout <<"["; for(int i =0; i> res; সেট <ভেক্টর > x; স্ট্যাটিক বুল cmp(ভেক্টর  a, ভেক্টর  b){ ফেরত a  temp, vector  &v){ if(idx ==v.size()){ if(x.find(temp) ==x.end()){ res .push_back(temp); x.insert(temp); } প্রত্যাবর্তন; } সমাধান (idx+1, temp, v); temp.push_back(v[idx]); সমাধান (idx+1, temp, v); temp.pop_back(); } ভেক্টর<ভেক্টর> সাবসেট উইথডুপ(ভেক্টর &a) { res.clear(); x.clear(); sort(a.begin(), a.end()); ভেক্টর  temp; সমাধান (0, temp, a); sort(res.begin(), res.end(), cmp); রিটার্ন রেস; }};প্রধান(){সমাধান ob; ভেক্টর v ={1,2,2}; print_vector(ob.subsetsWithDup(v));}

ইনপুট

[1,2,2]

আউটপুট

<প্রে>[[],[1, ],[1, 2, ],[1, 2, 2, ],[2, ],[2, 2, ],]
  1. C++ এ কনস্ট্রাক্টরের কাছে একটি ভেক্টর পাস করা

  2. ভেক্টর::রিসাইজ() বনাম ভেক্টর::রিজার্ভ() C++ এ

  3. C++ এ ইনফারেন্স টাইপ করুন

  4. পাইথনে উপসেট