Wszystkie podzbiory zbioru n-elementowego

0

Witam,

Potrzebuję napisać do programu wszystkie podzbiory zbioru n-elementowego. Nie potrafię sobie wyobrazić jak to można zrealizować za pomocą rekurencji(bo najlepiej tym sposobem?).

void podzbiory(vector<int> &vec, int n, int k, int m )
{
	cout << vec[k] << " " ;
	if( n == k )
		return;
	podzbiory(vec,3,k+1,1);
	
}

Tutaj mam tylko zbiory jednoelementowe i dalej jest właśnie problem. Jak wypisać za pomocą rekurencji podzbiory dwu- i trz- elementowe w przypadku powiedzmy zbioru 4-elementowego?

Proszę o cierpliwość i wytłumaczenie.

Pozdro ;)

2
void subsets(vector<int> &v)
  {
   for(unsigned i=1,n=1<<v.size();i<n;++i,cout<<endl) for(unsigned p=0;p<v.size();++p) if(i&(1<<p)) cout<<v[p]<<" ";
  }
0

Dziękuję bardzo za pomoc, teraz to muszę "przetrawić" :)
Dzięki jeszcze raz!

1 użytkowników online, w tym zalogowanych: 0, gości: 1