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

da sa to robit scitavanim predpripravenych offsetov, ak uvazujem kombinacie X z Y, tak si pripravim tabulku C(a,b) pre vsetky 'a' z rozsahu 1 az X, a pre vsetky 'b' z rozsahu 1 az Y, kde C je kombinacne cislo (pocet kombinacii a z b), C(a,b) = b! / (a! * (b-a)!)
a potom sa posuvam o offsety z tabulky:
ak 1.cislo je:
1: ostanem na zaciatku pola
>=2: posuniem sa o offset C(X-1, Y-1)
>=3: posuniem sa este o offset C(X-1, Y-2)
>=4: posuniem sa este o offset C(X-1, Y-3)
... atd. da sa to robit v cykle znizovanim 1.cisla az po nulu a pripocitavanim prislusnych offsetov z tabulky.

pre 2.cislo:
ak rozdiel 2.cisla a 1.cisla je 1: nic
ak rozdiel 2.cisla a 1.cisla je >=2: posuniem sa o C(X-2, Y-1 - 1.cislo)
ak rozdiel 2.cisla a 1.cisla je >=3: posuniem sa este o C(X-2, Y-2 - 1.cislo)
ak rozdiel 2.cisla a 1.cisla je >=4: posuniem sa este o C(X-2, Y-3 - 1.cislo)
... atd. tiez v cykle znizovanim 2.cisla az po 1.cislo a priratavanie offsetov z tabulky.

pre 3.cislo:
ak rozdiel 3.cisla a 2.cisla je 1: nic
ak rozdiel 3.cisla a 2.cisla je >=2: posuniem sa o C(X-3, Y-1 - 2.cislo)
ak rozdiel 3.cisla a 2.cisla je >=3: posuniem sa este o C(X-3, Y-2 - 2.cislo)
ak rozdiel 3.cisla a 2.cisla je >=4: posuniem sa este o C(X-3, Y-3 - 2.cislo)
... atd. tiez v cykle znizovanim 3.cisla az po 2.cislo a priratavanie offsetov z tabulky.


atd pre dalsie cisla. Nechce sa mi tu overovat teraz presne ci to co som napisal suhlasi, ale v principe sa takto da relativne rychlo (zlozitost takeho algoritmu je snad len O(1) :)) alebo kolko :) urcit offset.

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