Domanda

Ho il mio incarico per i compiti e non ho idea di come iniziare con il codice per questo tipo di problema.

Supponiamo che io abbia un array intero con composto da n elementi,

A] [b] [c] [d] [e] (abbiamo 5 elementi per esempio)

Voglio elencare tutta la somma della possibilità in modo tale che voglio stampare la somma di tutta la combinazione (ABCDE, ABCD, ABCE, ACDE, BCDE, ABC, ABD, ABE, ACE, ADE, BDE, CDE, AB, AC , AD, AE, BC, BD, BE, CD, CE, DE, A, B, C, D ed E)

Un altro esempio sarebbero 4 elementi in un array ([a] [b] [c] [d])

Voglio elencare tutta la somma della combinazione di (ABCD, ABC, ABD, ACD, BCD, AB, AC, AD, BC, BD, CD, A, B, C e D).

Spero che riuscite a capire la mia domanda. Ho bisogno di aiuto per questo e non so come farne?

È stato utile?

Soluzione

Bene, ecco una semplice regola da seguire:

L'insieme di tutte le combinazioni di "ABCDE" è composta da quelle combinazioni che contengono (e quindi iniziano con) "A" e quelle che non contengono "A". In entrambi i casi, possono verificarsi tutte le combinazioni di "BCDE". Naturalmente, le combinazioni di "BCDE" possono essere trattate allo stesso modo.

Altri suggerimenti

Quando dici "Elenca tutta la somma della possibilità", vuoi dire che vuoi sapere quanti Le combinazioni sono effettivamente possibili?

In tal caso, cerca combinazioni di n articoli presi k alla volta; Ci sono pagine proprio su questo sito che affrontano questo problema. Aggiungeresti semplicemente il numero di combinazioni di (per 5) + (per 4) + (per 3) + (per 2) + (per 1) per ottenere la tua "somma di possibilità" totale.

O vuoi dire che hai una serie di valori e vuoi letteralmente stampare le diverse somme rappresentate da diverse combinazioni degli elementi? In tal caso è necessario elencare tutte le combinazioni e valutare le somme.

Quindi, dato un array di {1, 2, 3, 4, 5} puoi codificarlo come "A", "b", "c", "d", "e". Esempi di tuple sarebbero:

  • ABCDE = 1+2+3+4+5
  • Abe = 1+2+5
  • Bce = 2+3+5

ecc., dove si utilizza l'enumerazione codificata per selezionare i aggiunti per la tua somma. Si noti che decidere se consentire o non consentire i duplicati (cioè, è "de" diverso da "ED") avrà un effetto molto grande sui risultati; Nella maggior parte dei casi questo probabilmente non Sii quel che vuoi essere.

Se hai 3 elementi, puoi immaginare ogni elemento posizionato in una determinata posizione da 1 a 3 (o 0 a 2) e un array booleano che rappresenta se l'elemento è contenuto in un determinato set.

ABC remark
--- ---------------------
000 no element in the set
001 one element, C
010 one element, b
100 ...
011 two elements, b and c
...
111 all elements contained

Ora se si calcola il numero di soluzioni, che è 2³ in questo caso, e genera una funzione, che fa una mappatura da una rappresentazione binaria a un set, da 011 a (b, c), ad esempio, puoi facilmente programmare A Loop, che itera da 0 a Max-1 e restituisce tutti i set, prodotto dalla funzione di mappatura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top