ecmlj Posted January 18, 2023 Posted January 18, 2023 Bom dia no unigui tem alguma função para contar permutações possíveis de um numero ou palavra? Tenho essa função mais não está funcionando corretamente, Só funciona se os caracteres não se repetirem Exemplo : Qtda caracteres|combinação com 3 char| combinação com 4 char 123456= 120 360 112345= 72 192 112234= 42 102 112233= 24 54 111234= 34 72 111223= 19 38 111222= 8 14 function CountPermutations02(str: string; r: Integer): Int64; function Factorial(n: Integer): Int64; var I: Integer; begin Result := 1; for I := 2 to n do Result := Result * I; end; function Combination(n, r: Integer): Int64; begin Result := Factorial(n) div (Factorial(r) * Factorial(n - r)); end; var I: Integer; count: array of Integer; n: Int64; begin SetLength(count, 256); for I := 1 to Length(str) do Inc(count[Ord(str[I])]); n := 1; for I := 0 to 255 do if count[I] <> 0 then n := n * Factorial(count[I]); Result := Combination(Length(str), r) * Factorial(r) div n; end; Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.