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

    [C-C++] Enumerare le possibili parole di k lettere da un alfabeto di n

    Ho il seguente "problemone": dato un alfabeto di n lettere (diciamo n=4) voglio enumerare, ovvero creare un contenitore al cui interno ci siano tutte le possibili combinazioni di parole di k lettere (diciamo k=2)...
    Supponiamo che l'alfabeto sia composto da queste lettere: a,b,c,d.
    Allora le possibili parole di due lettere sono:
    ab
    ac
    ad
    bc
    bd
    cd
    Ovviamente non sono parole ammissibili quelle in cui una lettera è ripetuta più volte (cioé, aa non è ammissibile), e sono parole uguali quelle contenenti le stesse lettere in posizioni diverse (cioè ab=ba, per cui la creo solo una volta).

    Come posso procedere per l'implementazione, considerando che dovrò scalare su numeri piuttosto grandi?:master:
    Mi conviene creare un array di stringhe, o un array di array?
    Altrimenti?

    Grazie per i suggerimenti!

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Potresti leggere questo
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Ho letto tutti i thread che contengono la parola chiave combinazioni... In pratica si risolvevano problemi di permutazioni... Qui il problema è differente.
    Il problema qui è che devo creare tutte le combinazioni di k lettere da un alfabeto di n lettere, con n>k...

    Come posso procedere?

  4. #4
    Stampare tutte le combinazioni di un alfabeto di 4 lettere equivale a contare in base 4.
    Esempio:
    codice:
    00
    01
    02
    03
    10
    11
    12
    13
    20
    21
    22
    23
    30
    31
    32
    33
    se consideriamo le singole cifre di un numero, come posizione della lettera nell'alfabeto, ed effettivamente lo sono, basta sostituire le varie cifre con la lettera corrispondente.
    Esempio:
    codice:
    00 --> aa
    01 --> ab
    02 --> ac
    03 --> ad
    10 --> ba
    11 --> bb
    12 --> bc
    13 --> bd
    20 --> ca
    21 --> cb
    22 --> cc
    23 --> cd
    30 --> da
    31 --> db
    32 --> dc
    33 --> dd

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.