Previous: Reading and writing multisets, Up: Multisets


11.7 Examples

The example program below prints all multisets elements containing the values {0,1,2,3} ordered by size. Multiset elements of the same size are ordered lexicographically.

     #include <stdio.h>
     #include <gsl/gsl_multiset.h>
     
     int
     main (void)
     {
       gsl_multiset * c;
       size_t i;
     
       printf ("All multisets of {0,1,2,3} by size:\n") ;
       for (i = 0; i <= 4; i++)
         {
           c = gsl_multiset_calloc (4, i);
           do
             {
               printf ("{");
               gsl_multiset_fprintf (stdout, c, " %u");
               printf (" }\n");
             }
           while (gsl_multiset_next (c) == GSL_SUCCESS);
           gsl_multiset_free (c);
         }
     
       return 0;
     }

Here is the output from the program,

     $ ./a.out
     all multisets of {0,1,2,3} by size:
     { }
     { 0 }
     { 1 }
     { 2 }
     { 3 }
     { 0 0 }
     { 0 1 }
     { 0 2 }
     { 0 3 }
     { 1 1 }
     { 1 2 }
     { 1 3 }
     { 2 2 }
     { 2 3 }
     { 3 3 }
     { 0 0 0 }
     { 0 0 1 }
     { 0 0 2 }
     { 0 0 3 }
     { 0 1 1 }
     { 0 1 2 }
     { 0 1 3 }
     { 0 2 2 }
     { 0 2 3 }
     { 0 3 3 }
     { 1 1 1 }
     { 1 1 2 }
     { 1 1 3 }
     { 1 2 2 }
     { 1 2 3 }
     { 1 3 3 }
     { 2 2 2 }
     { 2 2 3 }
     { 2 3 3 }
     { 3 3 3 }
     { 0 0 0 0 }
     { 0 0 0 1 }
     { 0 0 0 2 }
     { 0 0 0 3 }
     { 0 0 1 1 }
     { 0 0 1 2 }
     { 0 0 1 3 }
     { 0 0 2 2 }
     { 0 0 2 3 }
     { 0 0 3 3 }
     { 0 1 1 1 }
     { 0 1 1 2 }
     { 0 1 1 3 }
     { 0 1 2 2 }
     { 0 1 2 3 }
     { 0 1 3 3 }
     { 0 2 2 2 }
     { 0 2 2 3 }
     { 0 2 3 3 }
     { 0 3 3 3 }
     { 1 1 1 1 }
     { 1 1 1 2 }
     { 1 1 1 3 }
     { 1 1 2 2 }
     { 1 1 2 3 }
     { 1 1 3 3 }
     { 1 2 2 2 }
     { 1 2 2 3 }
     { 1 2 3 3 }
     { 1 3 3 3 }
     { 2 2 2 2 }
     { 2 2 2 3 }
     { 2 2 3 3 }
     { 2 3 3 3 }
     { 3 3 3 3 }

All 70 multisets are generated and sorted lexicographically.