// Jarod42 #include <algorithm> #include <cassert> #include <iostream> #include <iterator> #include <vector> template <typename T> void Permutation(std::vector<T> v) { std::sort(v.begin(), v.end()); do { std::copy(v.begin(), v.end(), std::ostream_iterator<T>(std::cout, " ")); std::cout << std::endl; } while (std::next_permutation(v.begin(), v.end())); } template <typename T> void Combination(const std::vector<T>& v, std::size_t count) { assert(count <= v.size()); std::vector<bool> bitset(v.size() - count, 0); bitset.resize(v.size(), 1); do { for (std::size_t i = 0; i != v.size(); ++i) { if (bitset[i]) { std::cout << v[i] << " "; } } std::cout << std::endl; } while (std::next_permutation(bitset.begin(), bitset.end())); } bool increase(std::vector<bool>& bs) { for (std::size_t i = 0; i != bs.size(); ++i) { bs[i] = !bs[i]; if (bs[i] == true) { return true; } } return false; // overflow } template <typename T> void PowerSet(const std::vector<T>& v) { std::vector<bool> bitset(v.size()); do { for (std::size_t i = 0; i != v.size(); ++i) { if (bitset[i]) { std::cout << v[i] << " "; } } std::cout << std::endl; } while (increase(bitset)); } int main() { std::vector<char> vc{ 'A', 'B', 'C', 'D', 'E', 'F' }; std::vector<char> path; std::vector<bool> visited(4, false); std::cout << "\n------PERMUTATION----------\n"; Permutation(vc); std::cout << "\n------COMBINATION----------\n"; Combination(vc, 2); std::cout << "\n------POWERSET-------------\n"; PowerSet(vc); return 0; }
Standard input is empty
------PERMUTATION---------- A B C D E F A B C D F E A B C E D F A B C E F D A B C F D E A B C F E D A B D C E F A B D C F E A B D E C F A B D E F C A B D F C E A B D F E C A B E C D F A B E C F D A B E D C F A B E D F C A B E F C D A B E F D C A B F C D E A B F C E D A B F D C E A B F D E C A B F E C D A B F E D C A C B D E F A C B D F E A C B E D F A C B E F D A C B F D E A C B F E D A C D B E F A C D B F E A C D E B F A C D E F B A C D F B E A C D F E B A C E B D F A C E B F D A C E D B F A C E D F B A C E F B D A C E F D B A C F B D E A C F B E D A C F D B E A C F D E B A C F E B D A C F E D B A D B C E F A D B C F E A D B E C F A D B E F C A D B F C E A D B F E C A D C B E F A D C B F E A D C E B F A D C E F B A D C F B E A D C F E B A D E B C F A D E B F C A D E C B F A D E C F B A D E F B C A D E F C B A D F B C E A D F B E C A D F C B E A D F C E B A D F E B C A D F E C B A E B C D F A E B C F D A E B D C F A E B D F C A E B F C D A E B F D C A E C B D F A E C B F D A E C D B F A E C D F B A E C F B D A E C F D B A E D B C F A E D B F C A E D C B F A E D C F B A E D F B C A E D F C B A E F B C D A E F B D C A E F C B D A E F C D B A E F D B C A E F D C B A F B C D E A F B C E D A F B D C E A F B D E C A F B E C D A F B E D C A F C B D E A F C B E D A F C D B E A F C D E B A F C E B D A F C E D B A F D B C E A F D B E C A F D C B E A F D C E B A F D E B C A F D E C B A F E B C D A F E B D C A F E C B D A F E C D B A F E D B C A F E D C B B A C D E F B A C D F E B A C E D F B A C E F D B A C F D E B A C F E D B A D C E F B A D C F E B A D E C F B A D E F C B A D F C E B A D F E C B A E C D F B A E C F D B A E D C F B A E D F C B A E F C D B A E F D C B A F C D E B A F C E D B A F D C E B A F D E C B A F E C D B A F E D C B C A D E F B C A D F E B C A E D F B C A E F D B C A F D E B C A F E D B C D A E F B C D A F E B C D E A F B C D E F A B C D F A E B C D F E A B C E A D F B C E A F D B C E D A F B C E D F A B C E F A D B C E F D A B C F A D E B C F A E D B C F D A E B C F D E A B C F E A D B C F E D A B D A C E F B D A C F E B D A E C F B D A E F C B D A F C E B D A F E C B D C A E F B D C A F E B D C E A F B D C E F A B D C F A E B D C F E A B D E A C F B D E A F C B D E C A F B D E C F A B D E F A C B D E F C A B D F A C E B D F A E C B D F C A E B D F C E A B D F E A C B D F E C A B E A C D F B E A C F D B E A D C F B E A D F C B E A F C D B E A F D C B E C A D F B E C A F D B E C D A F B E C D F A B E C F A D B E C F D A B E D A C F B E D A F C B E D C A F B E D C F A B E D F A C B E D F C A B E F A C D B E F A D C B E F C A D B E F C D A B E F D A C B E F D C A B F A C D E B F A C E D B F A D C E B F A D E C B F A E C D B F A E D C B F C A D E B F C A E D B F C D A E B F C D E A B F C E A D B F C E D A B F D A C E B F D A E C B F D C A E B F D C E A B F D E A C B F D E C A B F E A C D B F E A D C B F E C A D B F E C D A B F E D A C B F E D C A C A B D E F C A B D F E C A B E D F C A B E F D C A B F D E C A B F E D C A D B E F C A D B F E C A D E B F C A D E F B C A D F B E C A D F E B C A E B D F C A E B F D C A E D B F C A E D F B C A E F B D C A E F D B C A F B D E C A F B E D C A F D B E C A F D E B C A F E B D C A F E D B C B A D E F C B A D F E C B A E D F C B A E F D C B A F D E C B A F E D C B D A E F C B D A F E C B D E A F C B D E F A C B D F A E C B D F E A C B E A D F C B E A F D C B E D A F C B E D F A C B E F A D C B E F D A C B F A D E C B F A E D C B F D A E C B F D E A C B F E A D C B F E D A C D A B E F C D A B F E C D A E B F C D A E F B C D A F B E C D A F E B C D B A E F C D B A F E C D B E A F C D B E F A C D B F A E C D B F E A C D E A B F C D E A F B C D E B A F C D E B F A C D E F A B C D E F B A C D F A B E C D F A E B C D F B A E C D F B E A C D F E A B C D F E B A C E A B D F C E A B F D C E A D B F C E A D F B C E A F B D C E A F D B C E B A D F C E B A F D C E B D A F C E B D F A C E B F A D C E B F D A C E D A B F C E D A F B C E D B A F C E D B F A C E D F A B C E D F B A C E F A B D C E F A D B C E F B A D C E F B D A C E F D A B C E F D B A C F A B D E C F A B E D C F A D B E C F A D E B C F A E B D C F A E D B C F B A D E C F B A E D C F B D A E C F B D E A C F B E A D C F B E D A C F D A B E C F D A E B C F D B A E C F D B E A C F D E A B C F D E B A C F E A B D C F E A D B C F E B A D C F E B D A C F E D A B C F E D B A D A B C E F D A B C F E D A B E C F D A B E F C D A B F C E D A B F E C D A C B E F D A C B F E D A C E B F D A C E F B D A C F B E D A C F E B D A E B C F D A E B F C D A E C B F D A E C F B D A E F B C D A E F C B D A F B C E D A F B E C D A F C B E D A F C E B D A F E B C D A F E C B D B A C E F D B A C F E D B A E C F D B A E F C D B A F C E D B A F E C D B C A E F D B C A F E D B C E A F D B C E F A D B C F A E D B C F E A D B E A C F D B E A F C D B E C A F D B E C F A D B E F A C D B E F C A D B F A C E D B F A E C D B F C A E D B F C E A D B F E A C D B F E C A D C A B E F D C A B F E D C A E B F D C A E F B D C A F B E D C A F E B D C B A E F D C B A F E D C B E A F D C B E F A D C B F A E D C B F E A D C E A B F D C E A F B D C E B A F D C E B F A D C E F A B D C E F B A D C F A B E D C F A E B D C F B A E D C F B E A D C F E A B D C F E B A D E A B C F D E A B F C D E A C B F D E A C F B D E A F B C D E A F C B D E B A C F D E B A F C D E B C A F D E B C F A D E B F A C D E B F C A D E C A B F D E C A F B D E C B A F D E C B F A D E C F A B D E C F B A D E F A B C D E F A C B D E F B A C D E F B C A D E F C A B D E F C B A D F A B C E D F A B E C D F A C B E D F A C E B D F A E B C D F A E C B D F B A C E D F B A E C D F B C A E D F B C E A D F B E A C D F B E C A D F C A B E D F C A E B D F C B A E D F C B E A D F C E A B D F C E B A D F E A B C D F E A C B D F E B A C D F E B C A D F E C A B D F E C B A E A B C D F E A B C F D E A B D C F E A B D F C E A B F C D E A B F D C E A C B D F E A C B F D E A C D B F E A C D F B E A C F B D E A C F D B E A D B C F E A D B F C E A D C B F E A D C F B E A D F B C E A D F C B E A F B C D E A F B D C E A F C B D E A F C D B E A F D B C E A F D C B E B A C D F E B A C F D E B A D C F E B A D F C E B A F C D E B A F D C E B C A D F E B C A F D E B C D A F E B C D F A E B C F A D E B C F D A E B D A C F E B D A F C E B D C A F E B D C F A E B D F A C E B D F C A E B F A C D E B F A D C E B F C A D E B F C D A E B F D A C E B F D C A E C A B D F E C A B F D E C A D B F E C A D F B E C A F B D E C A F D B E C B A D F E C B A F D E C B D A F E C B D F A E C B F A D E C B F D A E C D A B F E C D A F B E C D B A F E C D B F A E C D F A B E C D F B A E C F A B D E C F A D B E C F B A D E C F B D A E C F D A B E C F D B A E D A B C F E D A B F C E D A C B F E D A C F B E D A F B C E D A F C B E D B A C F E D B A F C E D B C A F E D B C F A E D B F A C E D B F C A E D C A B F E D C A F B E D C B A F E D C B F A E D C F A B E D C F B A E D F A B C E D F A C B E D F B A C E D F B C A E D F C A B E D F C B A E F A B C D E F A B D C E F A C B D E F A C D B E F A D B C E F A D C B E F B A C D E F B A D C E F B C A D E F B C D A E F B D A C E F B D C A E F C A B D E F C A D B E F C B A D E F C B D A E F C D A B E F C D B A E F D A B C E F D A C B E F D B A C E F D B C A E F D C A B E F D C B A F A B C D E F A B C E D F A B D C E F A B D E C F A B E C D F A B E D C F A C B D E F A C B E D F A C D B E F A C D E B F A C E B D F A C E D B F A D B C E F A D B E C F A D C B E F A D C E B F A D E B C F A D E C B F A E B C D F A E B D C F A E C B D F A E C D B F A E D B C F A E D C B F B A C D E F B A C E D F B A D C E F B A D E C F B A E C D F B A E D C F B C A D E F B C A E D F B C D A E F B C D E A F B C E A D F B C E D A F B D A C E F B D A E C F B D C A E F B D C E A F B D E A C F B D E C A F B E A C D F B E A D C F B E C A D F B E C D A F B E D A C F B E D C A F C A B D E F C A B E D F C A D B E F C A D E B F C A E B D F C A E D B F C B A D E F C B A E D F C B D A E F C B D E A F C B E A D F C B E D A F C D A B E F C D A E B F C D B A E F C D B E A F C D E A B F C D E B A F C E A B D F C E A D B F C E B A D F C E B D A F C E D A B F C E D B A F D A B C E F D A B E C F D A C B E F D A C E B F D A E B C F D A E C B F D B A C E F D B A E C F D B C A E F D B C E A F D B E A C F D B E C A F D C A B E F D C A E B F D C B A E F D C B E A F D C E A B F D C E B A F D E A B C F D E A C B F D E B A C F D E B C A F D E C A B F D E C B A F E A B C D F E A B D C F E A C B D F E A C D B F E A D B C F E A D C B F E B A C D F E B A D C F E B C A D F E B C D A F E B D A C F E B D C A F E C A B D F E C A D B F E C B A D F E C B D A F E C D A B F E C D B A F E D A B C F E D A C B F E D B A C F E D B C A F E D C A B F E D C B A ------COMBINATION---------- E F D F D E C F C E C D B F B E B D B C A F A E A D A C A B ------POWERSET------------- A B A B C A C B C A B C D A D B D A B D C D A C D B C D A B C D E A E B E A B E C E A C E B C E A B C E D E A D E B D E A B D E C D E A C D E B C D E A B C D E F A F B F A B F C F A C F B C F A B C F D F A D F B D F A B D F C D F A C D F B C D F A B C D F E F A E F B E F A B E F C E F A C E F B C E F A B C E F D E F A D E F B D E F A B D E F C D E F A C D E F B C D E F A B C D E F