Permutation Lex
Progressively generates all the permutations of the given size, in lexicographic order.
Controller: CodeCogs
Interface
C++
Class PermutationLex
Consider the permutations of size n and Now consider the next two numbers in the numerical base , corresponding to each permutation Then is said to be the lexicographic succesor of if and only if . This class progressively generates all the permutations of the given size, in lexicographic order, starting with the identical permutation.Example:
#include <codecogs/maths/combinatorics/permutations/permutationlex.h> #include <iostream> int main() { Maths::Combinatorics::Permutations::PermutationLex P(7); std::cout << "The first 5 lexicographic permutations of 7 elements:"; std::cout << std::endl; for (int i = 0; i < 5; i++) { std::vector<int> alpha = P.getNext(); for (int j = 0; j < alpha.size(); j++) std::cout << alpha[j] << " "; std::cout << "\t rank = " << P.getRank(); std::cout << std::endl; } return 0; }
Output:
The first 5 lexicographic permutations of 7 elements: 1 2 3 4 5 6 7 rank = 1 1 2 3 4 5 7 6 rank = 2 1 2 3 4 6 5 7 rank = 3 1 2 3 4 6 7 5 rank = 4 1 2 3 4 7 5 6 rank = 5
References:
SUBSET, a C++ library of combinatorial routines, http://www.csit.fsu.edu/~burkardt/cpp_src/subset/subset.htmlAuthors
- Lucian Bentea (August 2005)
Source Code
Source code is available when you buy a Commercial licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.