brolo Posted March 9, 2012 Report Share Posted March 9, 2012 Boa Noite a todos, Quero gerar todas as combinações possiveís dado um array com os elementos, por exemplo: v=(2,5,6); Output seria: 2 5 6 25 52 256 526 562 652 Já ando a uns dias a tentar encontrar uma solução para este problema mas não consigo chegar a uma solução:S Alguem tem alguma luz ? Cumprimentos Bruno Link to comment Share on other sites More sharing options...
mjamado Posted March 9, 2012 Report Share Posted March 9, 2012 Falas em combinações, mas depois tens é permutações... Qual é que queres? "Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web. Link to comment Share on other sites More sharing options...
bsccara Posted March 9, 2012 Report Share Posted March 9, 2012 Se o que queres são as permutações do array, em que os resultados têm sempre o mesmo nº de elementos que o array, tens vários exemplos aqui: http://www.bearcave.com/random_hacks/permute.html. Mas os cinco primeiros resultados que indicas não são permutações válidas. Link to comment Share on other sites More sharing options...
veaoum Posted March 9, 2012 Report Share Posted March 9, 2012 Se bem me lembro tu consegues saber pelo numero de elementos o numero maximo combinações. Porque não as crias a lá pata? tipo uma iteração de zero até ao max combinação?! tens os elementos atravez do resto da divisão inteira pelo numero de elementos. Link to comment Share on other sites More sharing options...
brolo Posted March 9, 2012 Author Report Share Posted March 9, 2012 Obrigado por todas as sugestões e ajuda que prestaram, vou ver se consigo obter o output desejado através das várias sugestões que deram. Bem haja, Bruno Link to comment Share on other sites More sharing options...
Dr_Lion Posted March 9, 2012 Report Share Posted March 9, 2012 Não é um exercicio muito fácil, a maneira que estou a ver é calculares quantas possibilidades tens para cada numero de items a imprimir e depois até ao final do numero de items, ires variando.. mas é algo complicado á primeira vista. Link to comment Share on other sites More sharing options...
pmg Posted March 9, 2012 Report Share Posted March 9, 2012 Recursividade! Q: Quais são as combinações possiveis de um array com zero elementos? A: Fácil! Nenhuma. Q: Quais são as combinações possíveis de um array com N elementos? A: Fácil! São as N combinações que começam com cada um dos elementos do array, mais as combinações dos outros N-1 elementos. agora em código #include <stdio.h> void comb(int *arr, size_t n, size_t index) { size_t k; if (index == n) { /* array vazio, imprime o que está "para trás" */ printf("%d", arr[0]); for (k = 1; k < n; k++) printf(" %d", arr[k]); puts(""); return; } for (k = index; k < n; k++) { int tmp; /* mete cada um dos elementos ao principio */ tmp = arr[k]; arr[k] = arr[index]; arr[index] = tmp; /* recursividade! */ comb(arr, n, index + 1); /* repoe posicao inicial */ tmp = arr[k]; arr[k] = arr[index]; arr[index] = tmp; } } E podes usar essa função, por exemplo, assim int main(void) { int v[] = {1, 2, 3, 4}; comb(v, sizeof v / sizeof *v, 0); return 0; } Deixo ao teu critério a parte de fazeres permutações de N elementos M a M (com M < N), permutações com repetição, ..., ... What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now