2011年4月19日星期二

A algorithm to enumerate all the combinations of given numbers

/*
A algorithm to enumerate all the combinations of given numbers
Author : Anders Ma [2011_0419]
*/
#include

int array[100];
int cursor = 0;

void enumerate(int n)
{
int i;

for(i = 0; i < cursor; ++i)
printf("%d,", array[i]);
if (cursor != 0)
printf("\n");

for (i = 0; i < n; ++i) {
array[cursor++] = i + 1;
enumerate(i);
cursor--;
}
}

int
main(int argc, char **argv)
{
enumerate(5);
return 0;
}

anders@ubuntu:~/c$ ./enum
1,
2,
2,1,
3,
3,1,
3,2,
3,2,1,
4,
4,1,
4,2,
4,2,1,
4,3,
4,3,1,
4,3,2,
4,3,2,1,
5,
5,1,
5,2,
5,2,1,
5,3,
5,3,1,
5,3,2,
5,3,2,1,
5,4,
5,4,1,
5,4,2,
5,4,2,1,
5,4,3,
5,4,3,1,
5,4,3,2,
5,4,3,2,1,