Trataré de explicar el problema usando el ejemplo 8799. Eliges 9 en pos = 4 para intercambiar con 8 en pos = 1. Y obtienes 9798 para K = 1. Este es de hecho el más grande que puede obtener para K = 1. Ahora para K = 2, usted elige 9 en pos = 3 e intercambia con 7 en pos = 2. Y diste 9978.
Sin embargo, cuando hace GetMaxFromHeap (), puede continuar haciéndolo siempre que obtenga el mismo dígito una y otra vez e incremente i cada vez y verifique i <K. Digamos que lo haces 'veces. Ahora elige las ocurrencias más a la izquierda de ese dígito y lo mueve al lado más a la izquierda posible. Y los números que se están reemplazando se pueden poner en orden decreciente [Puede crear un montón máximo de números reemplazados, si lo desea]. Número de intercambios aquí = 's'. Por lo tanto, logró obtener el mayor número posible hasta ahora sin aumentar los intercambios.
El único inconveniente es que el dígito que obtuvo de los tiempos de GetMaxFromHeap () ya puede estar presente en el lado izquierdo. Considere 698788999, con K = 3. Entonces, siguiendo el algoritmo, puede eliminar 9 tres veces y moverlos a las primeras tres posiciones. Pero la segunda posición ya es un 9. Entonces, las primeras 4 posiciones se hacen 9, y los números reemplazados son 6,8 y 7 (tenga en cuenta que 9 no se reemplaza). Entonces los pones al final como 876. Entonces, el número que obtienes es 999988876. Este es de hecho el número más grande que puedes obtener con K = 3.
- ¿Cuáles son algunos buenos nombres de variables / métodos junto con la descripción donde encajan?
- Cómo encontrar el número máximo de árboles de expansión mínima en un gráfico
- 1,000 participantes toman un examen que consta de 100 preguntas y 5 opciones por pregunta. ¿Cuál es el mejor enfoque (algoritmo) para encontrar todos los pares posibles de participantes con al menos un 80% de coincidencia en las opciones que eligieron?
- ¿Cuál es el código de búsqueda binaria usando recursividad?
- ¿Cuáles son los ejemplos del mundo real que puedo usar para ilustrar la recursividad de mi clase de introducción CS?
Espero haberme aclarado. Si desea un pseudocódigo, hágamelo saber publicando en los comentarios.