Ir para conteúdo
  • Cadastre-se

luanemile

Membros Pro
  • Total de ítens

    4
  • Registro em

  • Última visita

Posts postados por luanemile

  1. Bom dia no delphi 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;

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.