Eclesiastes

Ícone

Sobre o que é este blog? O.o

Permutações

Para quem precisar fazer permutações de caracteres, eis o código:

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

static unsigned int size  =  0;

void permute(char *word, const unsigned int offset) {
	unsigned register int i;
	char t;
	
	if (offset == (size - 1)) {
		for (i = 0; i &lt; size; i++) {
			printf("%c", *(word + i));
		}
		printf("\\n");
		return;
	}	
	t = *(word + offset);
	for (i = offset; i &lt; size; i++) {
		*(word + offset) = *(word + i);
		*(word + i) = t;
		permute(word, offset + 1);
		*(word + i) = *(word + offset);
	}
	*(word + offset) = t;
}

int main(int argc, char **argv) {
	char *word;
	
	if (argc &lt; 2) return 0;
	if ((word = strdup(*(argv + 1))) == NULL) return 0;
	size = strlen(word);
	printf("Permutando \\"%s\\":\\n", *(argv + 1));
	permute(word, 0);
	return 0;
}

Arquivado em:Programação

2 Responses

  1. fabiocerqueira disse:

    C é coisa linda de Deus! hehe =D

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: