PDA

Visualizza la versione completa : [ALGORITMO] Listare le permutazioni di un numero


supern3t
29-09-2009, 16:52
Ciao ragazzi,
sono alla ricerca di un algoritmo che, dato un numero N fissato durante l'esecuzione del programa, mostri tutte le permutazioni costituite dai numeri 1,2,3...N senza ripetizioni e senza dare importanza all'ordine.

Mi spiego meglio con due esempi:

1° esempio:
Se N=3, esso dovrà fornire in output UNA SOLA combinazione, per esempio
(1,2,3)

o anche (1,3,2) o (2,1,3), perchè a me non interessa l'ordine e non voglio ripetizioni..

2° esempio
Se N=4, l'output deve dare solo 3 combinazioni, che potrebbero essere
(1,2,3)
(1,2,4)
(2,3,4)

qualche idea?
grazie.

LeleFT
29-09-2009, 17:03
Innanzitutto non hai specificato il linguaggio, come richiesto dal Regolamento interno (http://forum.html.it/forum/showthread.php?s=&threadid=973887).
In secondo luogo, se sei alla ricerca di un algoritmo già pronto, o non hai intenzione di svilupparlo tu, ma farlo sviluppare da altri, oltre ad utilizzare i normali strumenti di ricerca (Google in primis), dovresti postare nel forum "Offro Lavoro / Collaborazione".


Ciao. :ciauz:

supern3t
29-09-2009, 17:55
temo vi sia un fraintendimento.
Non ho specificato il linguaggio perchè ho parlato di "algoritmo", non di "implementazione" e per definizione gli algoritmi sono astratti e possono essere implementati in un qualsiasi linguaggio..

L'implementazione me la posso fare tranquillamente io, mi servirebbe solo un consiglio sul "come procedere dal punto di vista concettuale", se qualcuno ha qualche idea!

LeleFT
29-09-2009, 18:26
Originariamente inviato da supern3t
temo vi sia un fraintendimento.
Non ho specificato il linguaggio perchè ho parlato di "algoritmo", non di "implementazione" e per definizione gli algoritmi sono astratti e possono essere implementati in un qualsiasi linguaggio..

L'implementazione me la posso fare tranquillamente io, mi servirebbe solo un consiglio sul "come procedere dal punto di vista concettuale", se qualcuno ha qualche idea!

D'accordo... questa informazione andava comunque specificata nel titolo, come richiesto dal regolamento.

Aggiungo io.


Ciao. :ciauz:

ant_alt
30-09-2009, 02:34
ma l'output deve essere una serie di triple di numeri? non lo hai specificato ma dall'esempio fai capire così..anche perchè non avrebbe senso altrimenti

ps: cmq parli di combinazioni senza ripetizione, non permutazioni

ecco il codice nel caso delle triple, non credo esista al mondo un algoritmo più compatto :stordita:

#include<stdio.h>
// N elementi a gruppi di k = n! / (k!·(n - k)!)
int main()
{
int i,j,x,N=4;
for (i=1;i<=N;i++)for (j=i+1 ;j<=N;j++)for (x=j+1 ;x<=N;x++) printf("%d - %d - %d\n",i,j,x);
getchar();
}

Loading