Diskuze: Permutacia

C# .NET .NET (C# a Visual Basic) Permutacia American English version English version

Aktivity (1)
Avatar
Neaktivní uživatel:9.4.2016 13:09

Nazdar chlapi, poradíte my nejaký algoritmus na súčet všetkých permutácií nejakého čísla. Potrebujem algoritmus a nie zdroják ,

Odpovědět 9.4.2016 13:09
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:9.4.2016 13:15

A ešte som zabudol, že číslice sa môžu aj opakovať

Editováno 9.4.2016 13:16
Nahoru Odpovědět 9.4.2016 13:15
Neaktivní uživatelský účet
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:9.4.2016 14:44

Co myslíš přesně permutacemi s opakováním? Faktoriál? Tam se ale čísla neopakují.

Nahoru Odpovědět 9.4.2016 14:44
Why so serious? -Joker
Avatar
Neaktivní uživatel:9.4.2016 15:25

Majme napr. číslo 4247, a potrebujem vypočítať súčet všetkých možných permutácií čísla , čiže 4247+4274+472­4...=?, 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ď.

Nahoru Odpovědět 9.4.2016 15:25
Neaktivní uživatelský účet
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:9.4.2016 15:28

Už chápu.
Nestačil by kód v C#? Nebo jak jinak mám popsat algoritmus?

Editováno 9.4.2016 15:30
Nahoru Odpovědět 9.4.2016 15:28
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech
Neaktivní uživatel:9.4.2016 15:30

Stačil :D , ale pls popis mi tam aj komentáre, že čo robíš, diki.

Nahoru Odpovědět  +1 9.4.2016 15:30
Neaktivní uživatelský účet
Avatar
coells
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
coells:9.4.2016 18:48

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));
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 9.4.2016 18:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.