Resultados 1 a 16 de 16

Tópico: Rotina para array de numeros

  1. #1

    Rotina para array de numeros

    Boas!

    Precisava que me dessem umas dicas de como codar uma rotina que permita testar todas as combinações entre elementos de um array.

    Exemplo:

    int array[5]={12, 23,45, 10, 9};

    A rotina tem de todas as combinações possiveis destes 5 numeros.

    Por exemplo: 23, 12, 9, 10, 45 .

    Se não fui claro, não hesitem em colocar as vossas duvidas à cerca do problema.

    Hugzz!

    PS- A linguagem é C, mas o que necessito mesmo é de um algoritmo e não do código em si.
    Última edição de Barata; 03-05-2005 às 16:19

  2. #2
    Estas combinações são possiveis?
    { 12 }
    { 12 23 }
    { .........}
    E
    { 23, 12, 9, 10, 45 } é diferente de:
    { 23, 12, 9, 45, 10 }

    ?

  3. #3
    Citação Resposta Original de Karmack
    Estas combinações são possiveis?
    { 12 }
    { 12 23 }
    { .........}
    E
    { 23, 12, 9, 10, 45 } é diferente de:
    { 23, 12, 9, 45, 10 }

    ?
    As combinações geradas têm que ter sempre os 5 numeros.

    Sim, { 23, 12, 9, 10, 45 } != { 23, 12, 9, 45, 10 }.


  4. #4
    Citação Resposta Original de Barata
    As combinações geradas têm que ter sempre os 5 numeros.

    Sim, { 23, 12, 9, 10, 45 } != { 23, 12, 9, 45, 10 }.

    combinacoes de 5 numeros com repeticao?

    [[]]
    ---===[ CBurner -> Burn/Bench you PC! É o "toast" tuga!! ]===---
    Car care e mecânica - www.care4wheels.com - Car care e mecânica

  5. #5
    ORa bem, não pensei que isto fosse dar tantos problemas de interpretação, mas aqui vai algo que decerto facilitará.

    Isto é para um programa que estou a fazer para descobrir qual o menor caminho entre 40 cidades.

    Decidi fazer isto recorrendo ao menor caminho entre blocos de 10 cidades.

    Exemplo:

    Caminho 1: {1,2,3,4,5,6,7,8,9,10} = 500km
    !=
    Caminho 2: {2,1,3,4,5,6,7,8,9,10}= 493km

    Como é obvio já tenho função que me vai dar estas distancias. Isto foi apenas um exemplo. Cada numero representa uma cidade.

  6. #6
    Já ouviste falar do algoritmo de Dijkstra? Dado um ponto este calcula a menor distancia e os nós do caminho mais curto.
    Investiga no wikipedia ou usa o google.

  7. #7
    Citação Resposta Original de Karmack
    Já ouviste falar do algoritmo de Dijkstra? Dado um ponto este calcula a menor distancia e os nós do caminho mais curto.
    Investiga no wikipedia ou usa o google.
    o Dijkstra n calcula a arvore minima de suporte?

    ja agora --> http://matrix.inesc-id.pt/aed/?Material_de_apoio

    [[]]
    ---===[ CBurner -> Burn/Bench you PC! É o "toast" tuga!! ]===---
    Car care e mecânica - www.care4wheels.com - Car care e mecânica

  8. #8
    Power Member Avatar de zx-9r
    Data do Registo
    03-07-2004
    Local
    Lisboa
    Tantos Investigadores Operacionais
    R Tape Loading Error

  9. #9
    Power Member Avatar de fap
    Data do Registo
    10-01-2004
    Local
    Lisboa
    Citação Resposta Original de redalert
    o Dijkstra n calcula a arvore minima de suporte?

    ja agora --> http://matrix.inesc-id.pt/aed/?Material_de_apoio

    [[]]
    não sei a que te referes quando dizes árvore mínima de ?suporte?... o Dijkstra calcula o caminho mais curto de um ponto a todos os pontos de um grafo

    se querias dizer árvore mínima abrangente (minimum spanning tree) tens outros como o de Kruskal, Primm ou Essau-Williams
    "it's been two years and counting since they put her in this place. she's been diagnosed by some stupid f*ck and mommy agrees"

  10. #10
    Citação Resposta Original de fap
    se querias dizer árvore mínima abrangente (minimum spanning tree) tens outros como o de Kruskal, Primm ou Essau-Williams
    mst
    ---===[ CBurner -> Burn/Bench you PC! É o "toast" tuga!! ]===---
    Car care e mecânica - www.care4wheels.com - Car care e mecânica

  11. #11
    http://en.wikipedia.org/wiki/Dijkstra's_algorithm

    Isto fazia parte da minha consulta para o exame de AED2, deu bastante jeito(tem implementações em C, C++ e Python, para dar ainda menos trabalho ).

    Lembro-me também de um site que simulava (em applets de java) o funcionamento de vários algoritmos relacionados com grafos, aqueles de que o fap falou, por exemplo Se quiseres posso procurar-te isso.
    Só diz que o álcool não é bom para o pensamento quem nunca pensou bêbado

  12. #12
    Citação Resposta Original de PrOdG
    Se quiseres posso procurar-te isso.
    venha!

    [[]]
    ---===[ CBurner -> Burn/Bench you PC! É o "toast" tuga!! ]===---
    Car care e mecânica - www.care4wheels.com - Car care e mecânica

  13. #13
    Não consigo achar a página original de que estava a falar, mas estas duas também deve dar para safar

    http://www-b2.is.tokushima-u.ac.jp/~...in/index.shtml

    http://students.ceid.upatras.gr/~pap...t/contents.htm
    Só diz que o álcool não é bom para o pensamento quem nunca pensou bêbado

  14. #14
    Power Member Avatar de sapropel
    Data do Registo
    25-11-2004
    Local
    Oeiras
    isso é permutações
    http://en.wikipedia.org/wiki/Permutation
    têm lá no "permutation in computing" algoritmos para isso, lê.

    entretanto toma já uma implmentação para vectores de inteiros com o exemplo que deste:

    Código:
    #include <stdlib.h>
    #include <stdio.h>
    
    void swap( int * array, int a, int b )
    {
    	int temp = array[a];
    	array[a] = array[b];
    	array[b] = temp;
    }
    
    int permute( int *  array, int size )
    {
    	int key = size - 1;
    	int newkey = size - 1;
    
    	while( (key > 0) && (array[key] <= array[key-1]) )
    	{
    		key--;
    	}
    	key--;
    
    	if( key < 0 )
            return 0;
    
    	newkey = size - 1;
    	while( (newkey > key) && (array[newkey] <= array[key]) )
    	{
    		newkey--;
    	}
    
    	swap( array, key, newkey );
    
    	size--;
    	key++;
    
    	while( size > key )
    	{
    		swap( array, size, key );
    		key++;
    		size--;
    	}
    
    	return 1;
    }
    
    int main( int argc, char *argv[] )
    {
    	int test_array[] = { 12, 23,45, 10, 9 };
    
    	do  
    	{
    		printf( "%d  %d  %d  %d  %d\n", test_array[0], test_array[1], test_array[2], test_array[3], test_array[4] );
    	}
    	while( permute( test_array, 5 ) );
    	
    	return 0;
    }

  15. #15
    thanks alot sapropel!

  16. #16
    Pessoal podem passar aqui no meu tópico e dar-me umas dicas?
    Cumps.

    http://forum.zwame.pt/showthread.php...+spanning+tree

Tópicos Similares

  1. Access: Rotina para introdução de dados
    By fullshape in forum Programação
    Respostas: 6
    Última Mensagem: 18-02-2011, 18:37
  2. Rotina em PHP
    By meiros in forum Web Development
    Respostas: 3
    Última Mensagem: 12-02-2010, 05:57
  3. Respostas: 2
    Última Mensagem: 29-11-2009, 20:05
  4. Rotina de instalação do OS X???
    By Ruben Rocha in forum Apple Geral
    Respostas: 39
    Última Mensagem: 13-09-2007, 09:25

Registe-se no fórum e active o seu registo para deixar de ver este anúncio.