0,1,2,3 0,1,2,4 0,1,3,4 0,2,3,4 1,2,3,4
0,1,2 0,1,3 0,1,4 0,2,3 0,2,4 0,3,4 1,2,3 1,2,4 1,3,4 2,3,4
0,1 0,2 0,3 0,4 1,2 1,3 1,4 2,3 2,4 3,4
END
12345678910111213141516171819202122232425
#include <algorithm> #include <iostream> #include <string> using namespace std; void comb(int N, int K) { std::string bitmask(K, 1); // K leading 1's bitmask.resize(N, 0); // N-K trailing 0's // print integers and permute bitmask do { for (int i = 0; i < N; ++i) // [0..N-1] integers { if (bitmask[i]) std::cout << " " << i; } std::cout << std::endl; } while (std::prev_permutation(bitmask.begin(), bitmask.end())); } int main() { comb(5, 4); }
123456789101112131415161718192021222324252627
#include <algorithm> #include <iostream> #include <string> using namespace std; void comb(int N, int K) { std::string bitmask(K, 1); // K leading 1's bitmask.resize(N, 0); // N-K trailing 0's // print integers and permute bitmask do { for (int i = 0; i < N; ++i) // [0..N-1] integers { if (bitmask[i]) std::cout << " " << i; } std::cout << std::endl; } while (std::prev_permutation(bitmask.begin(), bitmask.end())); } int main() { for(int i = 4; i > 0; i--){ comb(5, i); } }