Devo scrivere un algoritmo per dividere / ordinare i numeri in tre gruppi per renderli ugualmente grandi.
Per essere più specifici:
Ho tre gruppi, chiamiamoli A , B e C . Allora ho molti numeri. Ogni numero ha assegnato un gruppo a cui appartiene, ma il fatto è che un numero potrebbe appartenere a uno dei due o uno dei tre gruppi (a uno di essi, ma non sappiamo esattamente a quale).
Dati campione:
Number | Group
1 | A (this number HAVE TO be in group A)
2 | A
3 | B
4 | C
5 | AC (this number can be in group A or C)
6 | BC (can be in group B or C)
7 | A
8 | B
9 | ABC (can be in group A, B or C)
...
Uno dei risultati corretti di questo esempio può essere:
A: 1, 2, 7
B: 3, 8, 9
C: 4, 5, 6
Non importa quale gruppo è scelto se ci fossero più gruppi assegnati a un numero (sarebbe meglio se fosse scelto casualmente). L'obiettivo è dividere quei numeri per rendere ogni gruppo ugualmente grande (o il più vicino possibile).
La mia domanda è: come scriveresti l'algoritmo per ottenere il risultato desiderato? Pseudo codice o descrizione verbale è sufficiente.