Gerar Combinações, sem repetir o elemento e o conjunto
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?
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
Curtidas 0
Respostas
Marco Salles
09/02/2011
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 não encontrei em lugar nenhum o que eu estou tentando fazer...
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);
GOSTEI 0
Telmo Machado..
09/02/2011
Perfeito, agora so falta adicionar um ProgressBar, Timer e um Add em Banco, para evitar de ter de ficar executando ele.
GOSTEI 0
Vtrx
09/02/2011
Edicilmar , cade vc edicilmar ????
É mesmo ,tem tanta gente boa sumida...
Cade o Zanela??
GOSTEI 0