Progressively generates all the permutations of the given size.

You're viewing an older version of this page (#274). View the current version.

View versions (1)

Interface

#include <codecogs/maths/combinatorics/permutations/permutation3.h>

using namespace Maths::Combinatorics::Permutations;

Overview

This class progressively generates all the permutations of the given size, while also giving the possibility to return the rank and parity of the current permutation.

Example:

#include <codecogs/maths/combinatorics/permutations/permutation3.h>
#include <iostream>
int main()
{
  Maths::Combinatorics::Permutations::Permutation3 P(7);
  std::cout << "The first 6 permutations of 7 elements:";
  std::cout << std::endl;
  for (int i = 0; i < 6; i++)
  {
    std::vector<int> alpha = P.getNext();
    for (int j = 0; j < alpha.size(); j++)
      std::cout << alpha[j] << " ";
    if (P.isEven())
      std::cout << "\tis even";
    else
      std::cout << "\tis odd";
    std::cout << "\t rank = " << P.getRank();
    std::cout << std::endl;
  }
  return 0;
}

Output:

The first 6 permutations of 7 elements:
1 2 3 4 5 6 7   is even  rank = 1
1 2 3 4 5 7 6   is odd   rank = 2
1 2 3 4 7 5 6   is even  rank = 3
1 2 3 7 4 5 6   is odd   rank = 4
1 2 7 3 4 5 6   is even  rank = 5
1 7 2 3 4 5 6   is odd   rank = 6

References

SUBSET, a C++ library of combinatorial routines, http://www.csit.fsu.edu/~burkardt/cpp_src/subset/subset.html

GPL Licence — free for non commercial use. See Licence details.

Members of Permutation3

CLASS METHOD

Permutation3

CLASS METHOD

getNext

CLASS METHOD

isEven

CLASS METHOD

getRank

CLASS METHOD

init