Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Combinazioni con Ripetizione

    Ho uno stupido problemino di calcolo combinatorio che non riesco a risolvere in modo semplice.

    Devo creare un generatore di combinazioni (con ripetizione)
    AAA, AAB, ABA, ...

    partendo da un array di n elementi
    int array[] = {10, 20, 30, 40};

    devo generare tutte le possibili combinazioni

    qualcuno puo' aiutarmi?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] Combinazioni con Ripetizione

    Originariamente inviato da _sys/sid
    Devo creare un generatore di combinazioni (con ripetizione)
    AAA, AAB, ABA, ...

    partendo da un array di n elementi
    int array[] = {10, 20, 30, 40};

    devo generare tutte le possibili combinazioni
    Non è difficilissimo. Nel tuo caso particolare avrai k = n.

    Devi gestire un secondo array, che contiene degli indici:

    int idx[4];

    All'inizio li metti tutti a 0. Ognuno di questi indici va a fare riferimento al corrispondente elemento nel tuo array che contiene i dati.
    Dovrai avere una sequenza degli indici di questo tipo:

    0 0 0 0
    0 0 0 1
    0 0 0 2
    0 0 0 3
    0 0 1 1

    (nota che quando un indice arriva al massimo, devi incrementare l'indice successivo e fare in modo che tutti quelli prima abbiano lo stesso valore)

    0 0 1 2
    0 0 1 3
    0 0 2 2 (vedi sopra)
    0 0 2 3
    0 0 3 3
    0 1 1 1
    0 1 1 2
    0 1 1 3
    0 1 2 2
    .....
    .....
    3 3 3 3

    Per ogni combinazione degli indici, ottieni la combinazione dei tuoi valori semplicemente prendendo l'elemento con indice indicato in idx[i].
    Un metodo del genere ti consente di "enumerare" tutte le combinazioni e di essere "generico".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.