source: Sophya/trunk/Poubelle/archTOI.old/subsets.h@ 4010

Last change on this file since 4010 was 555, checked in by ansari, 26 years ago

portage cxx en cours

File size: 730 bytes
RevLine 
[555]1// subsets.h
2// Eric Aubourg CEA/DAPNIA/SPP octobre 1999
3
4#ifndef SUBSETS_H
5#define SUBSETS_H
6
7template <class T>
8 set<set<T> > getSetOfSubsets(set<T> const&);
9
10
11template <class T>
12 set<set<T> > getSetOfSubsets(set<T> const& s) {
13 set<set<T> > subsets;
14 if (s.empty()) {
15 subsets.insert(s);
16 return subsets;
17 }
18
19 set<T> s1 = s;
20 T x = *(s1.begin());
21 s1.erase(s1.begin());
22 set<set<T> > sub1 = getSetOfSubsets(s1);
23 subsets.insert(sub1.begin(), sub1.end());
24 for (set<set<T> >::iterator i = sub1.begin(); i != sub1.end(); i++) {
25 s1 = *i;
26 s1.insert(x);
27 subsets.insert(s1);
28 }
29 return subsets;
30}
31
32// subsets 1 2 3 :
33// subsets 2 3 : {} {2} {3} {23}
34// + 1: {1} {12} {13} {123}
35
36
37#endif
Note: See TracBrowser for help on using the repository browser.