Allora ragazzi ho questo problema:
ho un array, e devo trovare 3 elementi di quest'array che sommati tra di loro facciano un certo risultato (mettiamo in questo caso 100)
Io avevo pensato ad una soluzione che era O(n^2*logn):
praticamente 2 cicli for innestati (n^2) + una ricerca (logn) per arrivare al valore target.
Il prblema è che mi si chiedeva una soluzione più veloce di n^2*logn, avevo pensato alla programmazione dinamica con tecnica della memoization, ma sinceramente non saprei come impostarla perchè meno di due cicli for per trovare 3 numeri non ne ho idea di come fare...
qui intanto l'algo che avevo trovato io:
Codice PHP:
for($i=0;$i<$size;$i++) {
for($j=0;$j<$size;$j++) {
if ($j==$i)
continue;
$current = $array[$i] + $array[$j];
if (array_search($target-$current,$array))
die('Found');
}
}