Prima di tutto, lasciami dire che questo non è compito (sono uno studente di livello A, questo non è niente vicino a quello che risolviamo (questo è il modo più difficile)), ma più di un problema sto cercando di scoprire come migliorare la mia logica di programmazione.Problema di programmazione ingannevole che ho difficoltà a girare la testa
Ho pensato a uno scenario in cui è presente una matrice di numeri casuali, diciamo ad esempio 10 numeri interi. L'utente inserirà un numero a cui vuole contare e l'algoritmo proverà a calcolare quali numeri sono necessari per ottenere tale somma. Per esempio, se volevo fare la somma 44 da questo array di interi:
myIntegers = array(1, 5, 9, 3, 7, 12, 36, 22, 19, 63);
Il risultato sarebbe:
36 + 3 + 5 = 44
O qualcosa del genere. Spero di essere chiaro. Come bonus aggiuntivo, vorrei fare in modo che l'algoritmo scelga il minor numero possibile di numeri per ottenere la somma richiesta o emetta un errore se la somma non può essere fatta con i numeri forniti.
Ho pensato di utilizzare la ricorsione e l'iterazione attraverso l'array, aggiungendo numeri ripetutamente fino a quando la somma non viene soddisfatta o superata. Ma quello che non riesco a capire è cosa fare se l'algoritmo supera la somma e deve essere selettivo su quali numeri scegliere dall'array.
Non sto cercando il codice completo o un algoritmo completo, voglio solo le tue opinioni su come dovrei procedere con questo e forse condividere alcuni suggerimenti o qualcosa del genere. Probabilmente comincerò a lavorare su questo stasera. : P
Come ho detto, non i compiti. Solo io voglio fare qualcosa un po 'più avanzato.
Grazie per l'aiuto che sei in grado di offrire. :)
vedi questo: http://en.wikipedia.org/wiki/Subset_sum_problem – codaddict
Aveva questo corso CS. Pensi ancora che sia compito. ;) –
Congratulazioni per aver risolto il problema NP-completo da solo! :) –