00001
00007 #ifndef SUBSET_DELTA_GENERATOR_HPP
00008 #define SUBSET_DELTA_GENERATOR_HPP
00009
00010 #include <vector>
00011
00016 struct SubsetDelta
00017 {
00018 unsigned int oldValue;
00019 unsigned int newValue;
00020 };
00021
00028 class SubsetDeltaGenerator
00029 {
00030 public:
00036 SubsetDeltaGenerator( unsigned int n );
00040 ~SubsetDeltaGenerator();
00041
00053 void getDeltasForSubsetsOfFixedLength( unsigned int k, std::vector<SubsetDelta> & deltas );
00054
00055 private:
00056 unsigned int n;
00057 unsigned int k;
00058 unsigned int *mCurrSubset;
00059 std::vector<SubsetDelta> mDeltas;
00060
00061
00062
00063
00064 void forward( int pointer, int difference );
00065 void reverse( int pointer, int difference );
00066 void process( int posChanged, int newValue );
00067 };
00068
00069 #endif