Problema feo (tres punteros)

Llamamos números que contienen solo factores 2, 3 y 5 números feos. Encuentra el enésimo número feo en orden de pequeño a grande.
 
Ejemplo:
Entrada: n = 10
Salida: 12
Explicación: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 son los primeros 10 números feos.
 
Ideas:
Podemos saber que cada matriz en la secuencia de números feos se obtiene de los x2, x3 o x5 anteriores, y para cada número en la secuencia hay x2, x3, x5 detrás de ellos
De esta manera, cada vez que agregamos es el más pequeño, por lo que podemos definir 3 punteros;
Por ejemplo, al principio d2, d3, d5 todos apuntan al subíndice 1
dp [1] = 1;
dp [2] = min (dp [d2] * 2, min (dp [d3] * 3, dp [d5] * 5));
Aquí, dado que dp [d2] * 2 = 2 es el más pequeño, todos se agregarán, d2 ++;
Al mismo tiempo, la consideración principal es que habrá dos casos del mismo tamaño, 2 * 3 = 3 * 2. Tenemos que juzgar cada vez. Si son del mismo tamaño, ambos indicadores deben moverse hacia atrás.

 

 

 

Supongo que te gusta

Origin www.cnblogs.com/Charls/p/12688886.html
Recomendado
Clasificación