00001 #ifndef _PartitionGenerator_H_ 00002 #define _PartitionGenerator_H_ 00003 00004 #include <vector> 00005 00006 00013 class PartitionGenerator { 00014 00015 public: 00016 00017 typedef std::vector<int> Partition; 00018 00021 std::vector<Partition> partitions(int collectionSize, 00022 int minCollectionSize = 1) const; 00023 00028 std::vector< std::vector<Partition> > 00029 sortedPartitions(int collectionSize, int minCollectionSize = 1) const; 00030 00031 private: 00033 class LessCollections { 00034 public: 00035 bool operator()(const Partition & a, 00036 const Partition & b) { 00037 return a.size() < b.size(); 00038 } 00039 }; 00040 00041 }; 00042 00043 #endif