Red de conocimiento informático - Conocimiento del nombre de dominio - Pregunta sobre programación de Microsoft C++ que busca código fuente y comentarios

Pregunta sobre programación de Microsoft C++ que busca código fuente y comentarios

/*

Un collar de cuentas (m? piezas) conectadas de extremo a extremo, con ?N colores (N<=10),

Diseño a El algoritmo toma uno de los segmentos y requiere que contenga todos los colores en N y que la longitud sea la más corta.

*/

#include?

#include?

#include?< string.h>

int?shortestlengh(char?*?in,?char?**?dst,?int?N)

{

/ /Cambiar a la forma de inin para evitar el resto

int?nlen?=?strlen(in);

char?*?in2?=?(char?*)malloc( 2?*?nlen?*?sizeof(char));?

memcpy(in2,?in,?nlen?*?sizeof(char));

memcpy(in2 ?+?nlen,?in,?nlen?*?sizeof(char));

int?start?=?0,?end?=?nlen?-?1;

int?shortestlen?=?nlen;

int?hash[256]?=?{0};

int?colornum?=?0;

int?s?=?0,?e?=?-1;

//Recorre todos los puntos de partida posibles

while(s?

{

while(colornum?

{

e++;

if(hash[int(in2[e])]?==?0)

{

colornum++;

}

hash[int(in2[e])]++;

}

/ /Eliminar la misma parte que antes

while(in2[s]?==?in2[s?+?1])

{

s++;

hash[(int)in2[s]]--;

}

//Actualiza la cadena más corta

if( shortlen ?>?e?-?s?+?1)

{

shortestlen?=?e?-?s?+?1;

start ?=?s;

end?=?e;

}

//Actualizar s, comenzando desde el siguiente color

hash[(int)in2[s]]--;

if(hash[(int)in2[s]]?==?0)

{

colornum--;

}

s?=?s?+?1;

}

*( dst )?=?(char?*)malloc(end?-?start?+?2);

memcpy(*dst,?in2?+?start,?end?-?start?+ ? 1);

(*dst)[end?-?start?+?1]?=?'\0';?//Nota

free(in2);

retorno?end?-?start?+?1;

}

int?main()

{

char?*?s?=?"addcddcbccbba";

char?*?d?=?NULL;

int?n?=?shortestlengh(s, ? &d,?4);

printf("%d\n%s\n",?n,?d);

p>

regresar?0;

}