Ciao Ho uno List<decimal>
contenente valori compresi tra] 0; 1]. Voglio verificare se un totale (o subtotale) di questi valori può essere uguale a 1 (o quasi).Verificare se una lista (o una sottolista di quell'elenco) di valori decimali può essere uguale a una certa somma
Posso anche utilizzare le funzioni Linq
per filtrare o manipolare l'elenco.
risultati desiderati:
- un elenco contenente {0.7, 0.7, 0.7} dovrebbe return false;
- Un elenco contenente {0.7, 0.3, 0.7} deve restituire true;
- Un elenco contenente {0.777777, 0.2, 0.1} deve restituire falso;
- Un elenco contenente {0,33333, 0,33333, 0,33333} deve restituire true;
- Un elenco contenente {0,4, 0,5, 0,6, 0,3} deve restituire true.
Ovviamente, voglio qualcosa con il minor costo possibile delle prestazioni.
Questo potrebbe essere meglio risolto da un [rete di flusso] (http://en.wikipedia.org/wiki/Flow_network) – NominSim
Grazie NominSim ma, non esiste un algoritmo più semplice? –
Per forza bruta avrete bisogno di tutte le permutazioni sommate, di cui ci sarà N! Diventerà costoso rapidamente senza qualcosa di un po 'più elaborato che io pensi. –