একটি সংখ্যা সেট দেওয়া আছে। এর সব সম্ভাব্য সাবসেট (পাওয়ার সেট) জেনারেট করতে হবে। এলিমেন্টগুলো ডুপ্লিকেট হতে পারে। যেমন সেট [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, ],]