Diskuze: Permutacia
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
A ešte som zabudol, že číslice sa môžu aj opakovať
Co myslíš přesně permutacemi s opakováním? Faktoriál? Tam se ale čísla neopakují.
Majme napr. číslo 4247, a potrebujem vypočítať súčet všetkých možných permutácií čísla , čiže 4247+4274+4724...=?, vtip je ale v tom, že aj keď prehodíš 4 zo 4 tak to musíš brať ako nové číslo, čiže 4247 keď prehodím štyrky dostanem to isté číslo ale musím to pripočítať do súčtu. A ja potrebujem algoritmus ako toto všetko naprogramovať ?? Vopred diki za odpoveď.
Už chápu.
Nestačil by kód v C#? Nebo jak jinak mám popsat algoritmus?
Stačil , ale pls popis mi tam aj komentáre, že čo robíš, diki.
Vždyť je to jen trocha elementární matematiky, zkus si rozepsat číslo
123 a určitě v tom najdeš systém.
Výsledný program je poměrně krátký.
static long permutationSum(long n, long i = 1, long f = 1, long g = 0, long h = 0) {
if (n > 0)
return permutationSum(n / 10, i + 1, f * i, g * 10 + 1, h + (n % 10));
else
return (i > 1) ? f * g * h / (i - 1) : 0;
}
static void Main()
{
Console.WriteLine(permutationSum(123));
}
Zobrazeno 7 zpráv z 7.