Gerador de possibilidades

2 respostas
R

Salve salve galera,

Estou iniciando no JAVA agora e estou com dificuldades em uma questão de lógica aqui.
Meu problema é o seguinte:

Considerando um vetor com os seguintes dados: a, b, c, d

Preciso fazer a lógica para gerar no primeiro loop a seguinte saida:
a
b
c
d

No segundo loop todas as combinações possíveis usando 2 digitos:
aa
ab
ac
ad
ba
bb
bc
bd
ca
cb
cc
cd
da
db
dc
dd

e depois com 3 digitos…
aaa
aab
aac

e por ai vai…

Alguem tem um fluxograma ou alguma dica de como vazer isto? so que tem um detalhe… o algoritmo tem que estar preparado para gerar combinações de N numeros, se eu tiver o alfabeto inteiro ele tem que estar preparado para gerar.

Espero que alguem possa me ajudar, enquanto isto vou continuar pensando aqui.

2 Respostas

A

Considere a recursividade.
Você precisa de uma combinação ou de um arranjo ?
São duas coisas distintas.
O que você quer na verdade é quebrar alguma senha.
Para isso já existem algoritmos prontos, de repente você procurar na internet
algum artigo falando sobre Análise Combinatória Aplicada ajuda mais do que meu texto.

Para um vetor de tamanho [ N ] :

Defina/Reserve/Crie um vetor temporario [ R ] do tamanho de [ N ] com o número total de algarismos como parâmetros [n] por exemplo. 
     N = 10
     n = 5 algarismos  ( 10 x 10 x 10 x 10 x 10) => Total de Possibilidades para N=10 e n= 5. = ou seja 10^5 possibilidades ( 100 mil possibilidades )

Se você conhece computação paralela, então pode utilizar técnicas para combinar parte dos vetores e à medida que os resultados vão saindo você
pode disparar outras "threads" para ir combinando os resultados. 
Essa dica é mais complexa, mas caso queira é a forma mais rápida. Procure na net por computação paralela/vetorial.
A exemplo: CUDA / XeonPhi / OpenCL  ( Nvidia, Intel ) / JCuda.

Faça para cada elemento [ N ] 

          Para c DE 0 até [n]

               Para i DE 0 até [ N ] 

                  // * Salve no vetor temporário [ R ] ( R de Resposta ) o Elemento na posição [ N ] ( algarismo );
                  n[c] += N[i];

               FimPara

           FimPara

Boa sorte e espero ter ajudado. Outra coisa…Antes de postar algo, PESQUISE, TRACE O OBJETIVO E VÁ ATRÁS DE LITERATURA !
NÃO ESPERE OS OUTROS RESOLVEREM UM PROBLEMA TEU, ASSIM VOCÊ RESTRINGE A TUA CAPACIDADE DE RACIOCÍNIO.

R

antoniogeneroso muito obrigado.

É mais ou menos para gerar senha sim, so que preciso da classe gerando as senhas para utilizar como retorno em outras partes do sistema.

Como é trabalho escolar usar um sistema pronto não poderia atender… Se não teria usando o que vem no BackTrack que é o mais rápido que ja vi.

Mas li seu texto e vou pesquisar sobre Análise Combinatória Aplicada.

Ja havia pesquisado mas voce ajudou a direcionar minha pesquisa.

Se alguem mais tiver algo a comentar sobre o tópico eu agradeço…

Quanto estiver pronto posto o resultado aqui pra vocês.

Criado 16 de abril de 2013
Ultima resposta 16 de abr. de 2013
Respostas 2
Participantes 2