Ho trovato questo problema da qualche parte in un concorso e non sono ancora riuscito a trovare una soluzione.La catena più lunga che può essere disposta
I numeri interi positivi. Devo trovare il sottoinsieme più lungo che tra ogni due elementi vicini uno divide l'altro.
Quello che sto facendo è: sto creando il grafico. Poi sto connettendo i nodi in cui i numeri si dividono l'un l'altro. Dopo di che sto usando DFS
(un nodo può essere connesso con due nodi).
Ma non tutti i casi di test sono veri nel sistema. Devo ordinare l'array prima di utilizzare DFS
? Forse c'è un algoritmo speciale (dinamico)?
In mancanza di casi di test:
N = 5
1 1 3 7 13
Il mio codice dà l'uscita 4
. Ma se io arrange
questo array come questo:
3 1 7 1 13
L'uscita è 5 ed è la vera risposta.
Ho anche utilizzato il metodo ricorsivo. Ma ho bisogno di qualcosa più veloce.
'Ma non tutti i casi di test sono veri' Si prega di specificare il caso di test in errore. –
La dimensione del problema suggerisce che un algoritmo di scala O (2^n) è accettabile, probabilmente moltiplicando n o n^2. Probabilmente la programmazione dinamica con una dimensione bitset e l'altra dimensione è l'ultimo elemento aggiunto. – nhahtdh
@nhahtdh Puoi darmi il link dove posso leggere a riguardo, per favore? –