Ak by si chcel implementaciu v C tak:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void VyplnTabulkuC(int X, int Y, int* Table_C)
{
int i, j;
for(i=0; i<X; i++)
for(j=i; j<Y; j++)
if(i==0 || i==j)
{
Table_C[i*Y + j] = 1;
}
else
{
Table_C[i*Y + j] = Table_C[i*Y + j-1] + Table_C[(i-1)*Y + j-1];
}
}
int DajIndexKombinacie(int* prvky_kombinacie, int X, int Y, int* Table_C)
{
int i, j, predch_prvok = -1, aktualny_prvok, offset = 0;
for(i=0; i<X; i++) // pre kazdy prvok kombinacie:
{
aktualny_prvok = prvky_kombinacie[i];
for(j=predch_prvok+2; j<=aktualny_prvok; j++)
{
offset += Table_C[(X-1-i)*Y + Y-j];
}
predch_prvok = aktualny_prvok;
}
return(offset);
}
void main(int argc, char *argv[])
{
int i, j, k, prvky_kombinacie[3];
int Table_C[3 * 6];
VyplnTabulkuC(3, 6, Table_C);
for(i=0; i<6; i++)
for(j=i+1; j<6; j++)
for(k=j+1; k<6; k++)
{
prvky_kombinacie[0] = i;
prvky_kombinacie[1] = j;
prvky_kombinacie[2] = k;
printf("%d%d%d : index %d\n", i+1, j+1, k+1, DajIndexKombinacie(prvky_kombinacie, 3, 6, Table_C));
}
}
main je len priklad pre kombinacie 3 z 6, funkcie VyplnTabulkuC a DajIndexKombinacie su univerzalne.
Pozor: pole prvky_kombinacie obsahuje poradove cisla prvkov kombinacie a pocita sa od 0, t.j. ak mam prvky "1","2","3","4","5" tak "1" ma poradove cislo 0, atd.
Kombinacia "123" bude teda ulozena v poli prvky_kombinacie takto:
prvky_kombinacie[0]=0
prvky_kombinacie[1]=1
prvky_kombinacie[2]=2