Ir para o conteúdo
jett

Permutação

Mensagens Recomendadas

jett

Pessoal, segue abaixo um código em que eu armazeno em lista crescente uma caixa de cores com certo número de bolinhas, e cada bolinha possui uma letra. Quero fazer fazer uma função com as possíveis permutações de todas as caixas: Suponha que tenho 2 caixas: a primeira com 1 bolas A e a segunda com 2 bolas B e C. Então o resultado seria:

A, B, C

A, C, B

Mas devo implementar a busca em profundidade de forma recursiva para gerar todas as possibilidades de resultado para o jogo. Vocês poderiam me dar uma ideia?

Abaixo o código de inserção:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct cor{
int quantidade;
char nomecor[20];
char letra [26];
struct cor *prox;
}cor;

cor *preenche(){
int cont;
cor *nova=(cor*)malloc(sizeof(cor));
printf("Qual o nome da cor: ");
fflush(stdin);
fgets(nova->nomecor, 20, stdin);
printf("Quantidade de bolas desta cor: ");
scanf("%d", &(nova->quantidade));
for(cont=0; cont<nova->quantidade; cont++){
printf("Digite uma letra: ");
fflush(stdin);
scanf("%c", &nova->letra[cont]);
}
nova->prox=NULL;
return nova;
}
cor *inserir(cor *C)//C é a lista de caixas
{
cor *nova=preenche();
if(C==NULL)
{
return nova;
}else
{
if(C->quantidade > nova ->quantidade)
{
nova->prox=C;
return nova;
}
else{

cor *ant,*aux;
aux=C;
ant=aux;

while( aux!=NULL)
{
if(aux->quantidade > nova ->quantidade)
{
break;
}
ant=aux;
aux=aux->prox;
}
ant->prox=nova;
nova->prox=aux;

return C;
}

}

}

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

se é para fazer o que pretendes : ter as bolas separadas por caixas, terás de refazer muito código ...

necessitas de várias listas, uma para cada caixa. depois calcular as permutações de cada caixa e no fim fazer a combinação de todas as permutações das caixas.

ps : não sei onde tiraste a ideia de fazer fflush(stdin) ... não seria fflush(stdout) ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.