Ciao a tutti,
il mio problema è il seguente: ho una struttura dati dinamica costituita da una lista in cui ogni voce è una coppia di valori (dato che mi interessa solo l'algoritmo e non il codice la si può considerare anche come un array bidimensionale).
Per intenderci, chiamo PESO il primo valore e RESISTENZA il secondo, ad esempio:
Quello che devo ottenere è una seconda lista, costruita a partire dagli elementi di questa, nella quale il valore RESISTENZA di ogni voce sia >= della somma dei pesi delle voci precedenti.codice:PESO RESISTENZA 80 90 1 91 11 3 3 1
Qualora non siano utilizzabili tutte le voci della lista (perchè a un certo punto la somma dei pesi supera la resistenza della voce ennesima) è necessario eliminare solo le voci "giuste" e combinare le restanti affinchè la lista sia più lunga possibile.
E' un problema apparentemente semplice ma che presenta diversi casi particolari.
Ci ho ragionato molto sopra ma senza riuscire a concepire nessun algoritmo abbastanza efficace... forse sarebbe opportuno organizzare la lista di partenza in un albero o qualche altra struttura dati prima di sottoporla all'algoritmo.
Voi che ne dite? Mi farebbe piacere sentire anche semplicemente una vostra opinione, per cercare di esplorare altri modi per risolvere il problema.
Grazie!