Oops, that didn't work... There are duplicates.
I guess I would just use a set like this:
Code:int main( int argc, char* argv[] ) { std::string alpha = "ABBCCCDD"; vector<char> elements(alpha.begin(), alpha.end()); vector<char> results(alpha.length() + 1, 0); std::set<vector<char> > prevCombos; int nItems = 3; CombinationGenerator<char> CG(elements, nItems); // Call NextCombination until there are no more combinations int nTries = 0; while (CG.NextCombination(results)) { if ( ! prevCombos.insert(results).second ) continue; // Output our results int nSize = results.size(); for ( int j = 0; j < nSize; j++ ) cout << results[j] << " "; cout << endl; nTries++; } cout << "Number of combinations is " << nTries << endl; return 0; }




Reply With Quote