Supponiamo che abbia un array ordinato che contiene n
interi.
Come trovo un sottoinsieme di dimensioni k
tale che la distanza minima tra tutte le coppie di interi nel sottoinsieme sia massimizzata, cioè che siano alla massima distanza.
esempio: array a[]={1,2,6,7,10}
e k=3
,
subset = {1,6,10}
, la distanza minima è 4 tra 10 e 6.
Sottoinsiemi errati:
{1,7,10}
, distanza minima è 3
e {1,2,6}
, la distanza minima è 1
Il mio primo pensiero è stato ottenere tutte le combinazioni nella dimensione di k, quindi calcolare la distanza di ciascuna di esse. Ma la complessità del tempo sarebbe O (n!), E l'intervistatore non gli piace. La programmazione dinamica è il suggerimento che mi ha dato, ma non ne ho ancora idea.
Ha suggerito di poter iniziare da un [0], trovare un [0] + x = Y anche nell'array ... e poi Y + x e così su k-1 volte, anche l'elemento kth sarà un [n-1], ma non sono riuscito a prenderlo. Non so perché ci deve essere un x , come nell'esempio sopra, la risposta corretta è {1,6,10}, la distanza tra 1 e 6 è 5, ed è 4 tra 6 e 10, allora cosa dovrebbe x essere?