Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Pořadí kombinace v poli

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

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny