Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

System

: Achar todas as combinações sem repetir

Recommended Posts

Seguinte: Preciso fazer uma lógica que eu dou uma matriz com uns números e ele me dá todas as possíveis combinações com os ítens da matriz, sem repetir os mesmos.Exempo: tenho 1 e 2. Ele vai retornar: 12; 21Entenderam?Como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi direito.

 

Em C seria +- assim

 

for(i=0;i<TAM;i++) {					 for(j=0;j<TAM;j++) {									  if(i!=j) printf("%d %d\n",matriz[i],matriz[j]);									  }					 }

Dois loops, um loop para o primeiro elemento e outro para o segundo. Ambos vão variar do primeiro elemento da matriz até o último, mas só vão imprimir quando os elementos forem diferentes.

 

Mas depende da quantidade de elementos que você quer em cada combinação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ow skimo.. este seu looping esta imprimindo os pares de vetores(matriz[]?? nao seria matriz[][]??)...

você deve comparar no if dentro dos laços os valores da matriz e nao os indices...

if(i!=j) printf("%d %d\n",matriz,matriz[j]);

vejamos q a dentro destes dois laço teremos uma rotina para verificar se os numeros que estao sendo comparados ja foram usados (verificar se nao sao repetidos)..

 

na logica você teria que ter mais dois laços que fariam a revisao para saber se ja foram usados..

 

 

for(i=0;i<TAM;i++)   for(j=0;j<TAM;j++)	  for(k=0;k<TAM;k++)		 for(l=0;l<TAM;l++)			if(matriz[i][j]<>matriz[k][l])			   printf("%d%d\n",matriz[i][j],matriz[k][l]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao disse q era esquisito essa parada?tinha a noção q era assim mas pra desenvolver na marra..to fora.. huahuahuia perder um dia pra analizar essa parada e dar um resultado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

aff... agora q fui ler mais profundamente o topico..

ele ta pedindo pra escrever as combinaçoes sem repetir...

puts... mais 4 for que vai percorrer a matriz d novo pra ver se ja foi usado..

 

eh meio simples a logica... o problema eh passar pra um algoritmo.. mas saiu..

to usando Pascal pra explicar melhor....

to usando duas variaveis logicas (repetido1, repetido2) uma pra q vai percorrer a matriz d novo ate aonde esta o elemento q estamos comparando... ela recebe true caso encontre um numero repetido pra tras...

 

for i:= 1 to 3 do	for j:= 1 to 3 do	begin	  repetido1 := false;	  for k := 1 to i do		for l := 1 to j-1 do		 if(mt[i,j] = mt[k,l])then repetido1 := true;
agora fazer a mesma coisa com o segundo elemento..

for m := 1 to 3 do	for n := 1 to 3 do	begin	   repetido2 := false;	   for p := 1 to m do		   for q := 1 to n-1 do			 if(mt[m,n] = mt[p,q])then repetido2 := true;
agora eh soh perguntar se foi encontrado numeros repetidos, se nao foram encontrados eu os escrevo...

if not(repetido1 and repetido2)then	 write(mt[i,j],mt[m,n],'-');
caso ficou meio confuso perguntem aew onde esta a duvida...

mas este eu testei e funfo beleza...

 

t+

 

tai o algoritmo funfando...

program teste;uses crt;var i,j,k,l,m,n,p,q : byte; repetido1,repetido2 : boolean; mt : array [1..3,1..3] of byte;begin  writeln('Entre com uma matriz 3x3');  for i := 1 to 3 do  begin	for j := 1 to 3 do	  read(mt[i,j]);	writeln;  end;  for i:= 1 to 3 do	for j:= 1 to 3 do	begin	  repetido1 := false;	  for k := 1 to i do		for l := 1 to j-1 do		 if(mt[i,j] = mt[k,l])then repetido1 := true;		for m := 1 to 3 do		   for n := 1 to 3 do		   begin			 repetido2 := false;			 for p := 1 to m do			   for q := 1 to n-1 do				if(mt[m,n] = mt[p,q])then repetido2 := true;			 if not(repetido1 and repetido2)then			   write(mt[i,j],mt[m,n],'-');		   end;	end;  readkey;end.
fikem c Deus

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh mó baba!uhauhauata loko sabia q seria algo assim...é ruim de eu parar pra pensar nisso hein!!!a logica é mole mesmo... o f*** sao ps erros você acerta uma coisa e gera dois erros novos q acertados geram mais dois... huauhauasai desse corpooooooooo !

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahuhauhaua galera.. isso eh bem legal mesmoagora tentem fazer estilo um brutal force...com todos caracteres UTF-8 =) hauhauahueu coloco uma sequencia de caracteres de até 5 no maximo.. o pc tem q descubri o que eu coloquei hehehedemora +- umas 5 hras em um pc para axar um de 5 caracteres usando apenas 8 bits de possibilidades.. rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloco uma sequencia de caracteres de até 5 no maximo.. o pc tem q descubri o que eu coloquei hehehedemora +- umas 5 hras em um pc para axar um de 5 caracteres usando apenas 8 bits de possibilidades.. rsrs

Com 2^8 caracteres teremos (2^8)^5 possibilidades de senha.Ou seja, 1099511627776 senhas diferentes. Pode crer que o computador vai levar mais que 5 horas pra checar todas =P.Isso se você considerar que tem 5 caracteres exatamente. Mas se houver a chance de serem menos caracteres...

Compartilhar este post


Link para o post
Compartilhar em outros sites

[...]

 

eh meio simples a logica... o problema eh passar pra um algoritmo.. mas saiu..

to usando Pascal pra explicar melhor....

to usando duas variaveis logicas (repetido1, repetido2) uma pra q vai percorrer a matriz d novo ate aonde esta o elemento q estamos comparando... ela recebe true caso encontre um numero repetido pra tras...

 

[...]

Ai ai ai... Esqueci de dizer que não sei quantos elementos tem a matriz, mas ela não tem mais de uma dimensão, pois vi matriz[][], que é para uma de duas dimensões.

 

As combinações que estou pedindo são combinações em que TODOS os números estejam presentes.

 

Já tentei fazer mas não sei a lógica da coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por padrao a definiçao de matriz eh para vetores de ordem maior q 1..

 

mais simples entao..

veja a logica d codigo q postei para matrizes e implemente de acordo com seu problema..

ali ja ta na cara..

 

tem q ralar um pouco... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.