Usamos uno que sabemos que un subconjunto de una matriz puede ser seleccionado y deseleccionado por todos los elementos.
Una matriz de longitud n tiene un total de 2 ^ n subconjuntos.
Usamos una representación binaria de n bits, donde cada bit tiene dos valores, 0 y 1, 1 significa tomar, 0 significa no tomar. Entonces enumeramos estos 2 ^ n estados, averiguamos la representación del bit correspondiente y luego lo agregamos a la matriz de respuesta.
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
int n = nums.size();
vector<vector<int>> res;
for(int i=0;i<(1<<n);i++){
vector<int> tmp;
for(int j=0;j<n;j++){
if(i&(1<<j)){
tmp.emplace_back(nums[j]);
}
}
res.emplace_back(tmp);
}
return res;
}
};