Ajuda com trabalho

apocalipsus

Power Member
Tenho um trabalho para fazer e nao sei como o fazer.
O trablho é simples de entender:
O programa pede ao utilizador uma palavra (ou conjunto de caracteres). Depois o programa pede tb o numero e depois o programa devolve palavras (com comprimento igual ao numero introduzido) que tenham os mesmos caracteres que a palavra de cima.
Que estrutura é melhor para fazer isto.
Como isto é uma disciplina de Estrutura de dados e nos demos as seguintes estruturas:
Listas (e as filas pilhas)
Tabelas de Hash
Arvores (binarias Avl Red & Black)

Tb podemos usar vectores e assim
 
Pera lá, pede um conjunto de caracteres e devolve palavras com o numero de letras introduzido e que contenham esses chars? E onde é que vais buscar as palavras que ele tem devolver?
 
Sem uma espécie de dicionário, isso vai ser MUITO difícil, suponho. O que podias fazer era fazer combinações dos caracteres e verificar se existiam nesse dicionário. Sem dicionário, ou fazes para ele mandar uma combinação qualquer de caracteres (muito dificilmente uma palavra) ou então diverteste a programar isso caso a caso. :rolleyes:
 
Pois isso parece-me mais cena pa uma hash table. Tu com uma função de hash simples, k some o valor asci de cada caracter da palavra facilmente consegues fazer com que todas as palavras com os mesmos caracteres, independentemente da ordem em k estão na palavra, vão dar a mesma posição da hash table. Em cada posição da hash table vais ter de ter uma lista simples de todas as palavras k vão dar a essa posição da hash, ou seja, todas as palavras com cujos caracteres somandos mesmo que tejam por ordem diferente dão o mesmo valor. Tens agora 1 problema, k e k palavras com caracteres diferentes podem dar um valor final igual quando somados todos os caracteres dessas palavras. Uma cena k ja te ajuda e o facto de poderes passar o comprimento das palavras, assim todas as palavras com comprimento maior ou menor da pretendida ficam de fora. O prob e memo para palavras de igual comprimento ao pretendido, mas com caracteres diferentes k somem igual. Para isto deves desenvolver uma função k teste caracter a caracter a palavra que introduziste e todas as palavras k tens na hash tabel na posição a k ela foi dar, para ver se os caracteres são iguais um por um.

Espero ter ajudado alguma coisa, pk tar a xplicar isto aki assim deve ser um bocado confuso pa ti.
 
Última edição:
Épa eu tinha feito um edit ao post a esplicar o resto mas parece que o edit nao gravou.
Akilo carregamos um dicionario com as palavras todas da lingua portuguesa.

Eu vou dar o exemplo que esta la no enuciado:
PS-Eskeci de dizer que a primeira palavra so pode ter no maximo 26 caracteres
Insira caracteres ate um numero maximo de 26

M I R A N D A

Indique o número mínimo de caracteres das palavras a mostrar

5

E o resultado será:

42 respostas encontradas para os caracteres de “miranda“:
1 adiam 2 adiar 3 adira 4 adiram 5 adirá
6 admira 7 ainda 8 andai 9 andam 10 andar
11 anima 12 animar 13 ardam 14 ardia 15 ardiam
16 arida 17 armai 18 danai 19 danam 20 danar
21 daria 22 dariam 23 drama 24 irada 25 irmana
26 manda 27 mandai 28 mandar 29 mania 30 maria
31 miara 32 minada 33 minar 34 minara 35 mndia
36 nadai 37 nadam 38 nadar 39 radia 40 radiam
41 raiam 42 rimada

tempo de procura 1500 ms
Isto é feito em Java
 
Back
Topo