subset, a Fortran77 code which enumerates, generates, randomizes, ranks and unranks combinatorial objects including combinations, compositions, Gray codes, index sets, partitions, permutations, polynomials, subsets, and Young tables. Backtracking routines are included to solve some combinatorial problems. Other routines handled continued fractions, and Diophantine equations.

These include the enumeration, generation, random selection, ranking and unranking of

Other objects considered include


The information on this web page is distributed under the MIT license.


subset is available in a C version and a C++ version and a Fortran77 version and a Fortran90 version and a MATLAB version and an Octave version and a Python version.

Related Data and Programs:


backtrack_binary_rc, a Fortran77 code which carries out a backtrack search for a set of binary decisions, using reverse communication.

change_making, a Fortran77 library which considers the change making problem, in which a given sum is to be formed using coins of various denominations.

combination_lock, a Fortran77 program which simulates the process of determining the secret combination of a lock.

combo, a Fortran77 library which contains a variety of combinatorial routines.

knapsack_01, a Fortran77 library which uses brute force to solve small versions of the 0/1 knapsack problem;

legendre_product_polynomial, a Fortran77 library which defines Legendre product polynomials, creating a multivariate polynomial as the product of univariate Legendre polynomials.

monomial, a Fortran77 library which enumerates, lists, ranks, unranks and randomizes multivariate monomials in a space of M dimensions, with total degree less than N, equal to N, or lying within a given range.

partition_problem, a Fortran77 library which seeks solutions of the partition problem, splitting a set of integers into two subsets with equal sum.

polynomial, a Fortran77 library which adds, multiplies, differentiates, evaluates and prints multivariate polynomials in a space of M dimensions.

Source Code:

Last revised on 15 December 2023.