Fórum Gerar Combinações, sem repetir o elemento e o conjunto #395264

09/02/2011

0

Olá pessoal, estou quebrando a cabeça para fazer o algoritmo...
não encontrei em lugar nenhum o que eu estou tentando fazer...

é o seguinte...

vou dar um exemplo com quantidades menores:

* Vamos supor que eu tenho  [A  B  C  D  E]  (amostra)
* Filtrando para DUAS letras, ou seja, combinações de DUAS letras,
* E também sem REPETIR os (AA) (BB)....
* E também sem REPETIR (BA) (AB).....

teriamos:
AB, AC, AD, AE, BC, BD, BE, CD, CE, DE


Vamos supor outra situação:

* Vamos supor que eu tenho  [A  B  C  D]  (amostra)
* Com filtro de TRES, ou seja, combinações de TRES letras,
* E também sem REPETIR o ([b]AAA[/b]) ([b]BBB[/b]) ([b]AA[/b]B) (C[b]DD[/b]), ([b]B[/b]D[b]B[/b]) ....
* E também sem REPETIR ([u]ABC[/u]) ([u]ACB[/u]) ([u]CAB[/u]) ..., ([i]DCB[/i]) ([i]CDB[/i]) etc...

teriamos:
ABC, ABD, ACD, BCD            somente

RESUMINDO... não importa a ORDEM.
Imaginem que as letras são PESSOAS... não da pra duplicar PESSOAS...

seria como se fosse a seguinte pergunta:
[b]Em uma sala com 4 pessoas.... se fossemos formar um grupo de 3 pessoas, e deixar 1 fora, quantos grupos diferentes seriam possiveis formar???... e quais são eles???...[/b]


mas na verdade o meu problema eh com:
AMOSTRA de 15 Letras
CONJUNTOS de 6 Letras


alguém conhece o algoritmo?
Guilherme

Guilherme

Responder

Posts

09/02/2011

Marco Salles

Olá pessoal, estou quebrando a cabeça para fazer o algoritmo...
não encontrei em lugar nenhum o que eu estou tentando fazer...
tem sim amigo... Aqui mesmo no site neste tópico   http://forum.devmedia.com.br/viewtopic.php?t=72667&highlight=combina%E7%F5es   sem muita dificuldade se varia para o seu caso particular

perceba ao ler o link   for I := 1 to 6
for J := I+1 to 7
for K := J+1 to 8   Edicilmar , cade vc edicilmar ????  
var
s:string;
i,j,k,l,m,n:integer;
TS: TStrings;
begin
Memo1.Lines.Clear;
TS := TStringList.Create;
  for i := 1 to 10 do
    for j := i+1 to 11 do
      for k:=j+1 to 12 do
        for L:=k+1 to 14 do
          for m:=l+1 to 14 do
            for n:=m+1 to 15 do
              begin
                s := IntToStr(i)+','+IntToStr(j)+','+IntToStr(k)+','+
                                IntToStr(L)+','+inttostr(m)+','+inttostr(n);
                TS.Add(s);
            end;
Memo1.Lines.Assign(TS);
TS.Free;
Label1.Caption := 'Total de combinações: '+IntToStr(Memo1.Lines.Count);

Responder

Gostei + 0

23/10/2012

Telmo Machado..

Perfeito, agora so falta adicionar um ProgressBar, Timer e um Add em Banco, para evitar de ter de ficar executando ele.
Responder

Gostei + 0

23/10/2012

Vtrx

Edicilmar , cade vc edicilmar ????

É mesmo ,tem tanta gente boa sumida...
Cade o Zanela??
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar