Aiuto! algoritmo combinazioni

di il
3 risposte

Aiuto! algoritmo combinazioni

Ho bisogno di scrivere una funzione che dato un vettore di interi mi stampi tutte le possibili combinazioni a k a k per ogni k; esempio se ho un vettore di 5 elementi 1,2,3,4,5 con k=3 avrei:
123,124,125,134,135,145,234,235,245,345


ho trovato in rete questo algoritmo, se mi potete dare una mano a tradurlo in c ve ne sarei molto grato...
comb40()

Prgm

Local i,j

DelVar cc

true->kappa

immiss()

false->kappa

8->ri:8->co

ClrIO

Define combinas()=Prgm

k->i

While i>=1

If aa[i]<n-k+i Then

aa[i]+1->aa[i]

For j,i+1,k

aa[j-1]+1->aa[j]

EndFor

0->i

EndIf

i-1->i

EndWhile

EndPrgm

Define tutte()=Prgm

Loop

aa->bb

combinas()

If not copia(aa,bb,k) Then

stampa(aa,ri,co,k)

co+48->co

If co>235 Then

ri+18->ri:8->co

EndIf

Else

Exit

EndIf

EndLoop

EndPrgm

stampa(aa,ri,co,k)

co+48->co

tutte()

EndPrgm



Per n=3 e k=2

3 Risposte

  • Re: Aiuto! algoritmo combinazioni

    Rinnovo la richiesta... ed aggiungo che sarebbe bello averlo per java....
  • Re: Aiuto! algoritmo combinazioni

    Sbagli già a formulare la richiesta....nella richiesta il problema era un tale, nell'esempio che hai fatto il problema è un altro. (Nell'esempio da te fatto...nelle combinazioni l'ultima cifra di ogni combinazione dev'essere uguale di quella che la precede..INVECE nella richiesta da te fatta questo accorgimento non viene fatto, quindi anche 543, 154 varrebbero). riformula..

    PS: da che sito hai preso quell'algoritmo?

    (Human > CPU) ? (return 0) : (return -1);­
  • Re: Aiuto! algoritmo combinazioni

    Correzione..
    *** nelle combinazioni l'ultima cifra di ogni combinazione dev'essere maggiore di quella che la precede...


    se ti serviva un algoritmo che ti stampi tutte le possibili combinazioni...(come quello che ti hanno messo su universitor.it) potevi benissimo guardare in rete prima di postare il tuo problema su n (numero grande) forum...


    (Human > CPU) ? (return 0) : (return -1);­
Devi accedere o registrarti per scrivere nel forum
3 risposte