Ho incluso il mio approccio e la mia soluzione. La mia soluzione funziona bene, tuttavia, non è ottimizzata con la complessità di O (n ^ 3)
Un ONG sta eseguendo un programma di distribuzione dei semi. Ha una quantità limitata di semi di qualità varia. Per ottenere i semi, l'agricoltore deve richiedere il numero di semi. La distribuzione dei semi avviene solo di domenica con l'obiettivo che i massimi agricoltori ottengano i semi della migliore qualità dello stesso tipo.
Considera che le ONG hanno seguito i semi e contano (ordinati per qualità - il livello più alto è il più alto):
|Quality|Fruit1|Fruit2|Fruit3|
|-------|------|------|------|
|Highest| 3| 3| 1|
|Medium | 2| 0| 0|
|Low | 4| 0| 0|
Semi obbligatori:
- Farmer 1: 2
- Farmer 2: 3
- Farmer 3: 1
- Farmer 4: 2
- Farmer 5: 3
Output: l'obiettivo è assegnare le sementi di massima qualità ai massimi agricoltori.
- Farmer 1: Highest Fruit1
- Farmer 2: Highest - Fruit2
- Farmer 3: Highest - Fruit1
- Farmer 4: Medium - Fruit1
- Farmer 5: Low - Fruit1
Qui, i contadini 1 e 3 in combinazione hanno richiesto 3 semi, quindi, in combinazione, hanno ottenuto il frutto più alto1.
Il mio approccio (Pseudocode)
Ho le seguenti classi di dominio: Farmer, QualityType, FruitType, Seeds
QualityType ha un elenco di FruitType che contiene un elenco di semi.
Per ottenere il risultato, sto seguendo il seguente:
- Esegui l'iter dal più alto tipo di qualità al più basso.
- esegui l'iterazione annidata al tipo di frutta e ai semi.
- Per ogni seme, controlla se abbiamo farmer1 che chiede lo stesso numero di semi - da solo o in combinazione con qualcun altro.
- Se non ti sposti con il contadino due.
- Questo funziona tuttavia non è ottimizzato in quanto ha 3 cicli annidati.
Puoi suggerire qualsiasi algoritmo in grado di semplificarlo?