কম্পিউটার টিউটোরিয়াল

C++-এ সাবসেটস II (ডুপ্লিকেট এলিমেন্টসহ পাওয়ার সেট)


একটি সংখ্যা সেট দেওয়া আছে। এর সব সম্ভাব্য সাবসেট (পাওয়ার সেট) জেনারেট করতে হবে। এলিমেন্টগুলো ডুপ্লিকেট হতে পারে। যেমন সেট [1,2,2] হলে পাওয়ার সেট: [[], [1], [2], [1,2], [2,2], [1,2,2]]।

সমাধানের ধাপ:

  • res অ্যারে এবং x সেট ডিক্লেয়ার
  • রিকার্সিভ পদ্ধতিতে solve() ফাংশন ব্যবহার (ইনডেক্স, টেম্প অ্যারে, nums অ্যারে)
  • যদি ইনডেক্স = v-এর সাইজ, তবে temp x-এ না থাকলে res-এ এবং x-এ ইনসার্ট
  • solve(index+1, temp, v) কল
  • temp-এ v[index] ইনসার্ট
  • solve(index+1, temp, v) কল
  • temp-এর শেষ এলিমেন্ট রিমুভ
  • মেইন ফাংশন: res ও x ক্লিয়ার, অ্যারের সর্ট, টেম্প অ্যারে ডিক্লেয়ার, solve(0, temp, array) কল, res সর্ট করে রিটার্ন

উদাহরণ

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

void print_vector(vector<vector<int> > v){
    cout << "[";
    for(int i = 0; i

ইনপুট

[1,2,2]

আউটপুট

[[],[1, ],[1, 2, ],[1, 2, 2, ],[2, ],[2, 2, ],]

  1. C++-এ কনস্ট্রাক্টরে ভেক্টর পাস করা (Passing a vector to constructor in C++)

  2. C++-এ vector::resize() বনাম vector::reserve() পার্থক্য

  3. C++-এ টাইপ ইনফারেন্স (Type Inference)

  4. পাইথনে Subsets (সাবসেট/পাওয়ার সেট) জেনারেট করা