Red de conocimiento informático - Aprendizaje de código fuente - ¿Cómo escribir el problema del anillo de Josephus en estructuras de datos en lenguaje C?

¿Cómo escribir el problema del anillo de Josephus en estructuras de datos en lenguaje C?

Problema: Hay n personas en un círculo, numeradas en orden. Empiece a contar desde la primera persona (informando del 1 al 3). Cualquiera que indique 3 sale del círculo y pregunta: ¿queda el número original?

1. Análisis del programa: este es un algoritmo relativamente clásico: el problema del anillo de Joseph.

2. Análisis personal: este es un algoritmo relativamente clásico. Para este tipo de problemas, debería ser más fácil utilizar una lista vinculada. El algoritmo de anillo de Joseph incorpora la función de usar una matriz para completar una lista vinculada. Aunque la forma es completamente diferente, el resultado obtenido es el mismo. Esto va en la misma línea. En resumen, personalmente creo que este es un algoritmo de matriz muy clásico. ¡Espero que esta persona no escriba código que sea despreciado! k;

int suma=N

k=0

for(i=0;ia[i]=i+1;

for(i=0;i

printf("%-4d",a[i]);

printf("/n");

for(i=0;;i++)

{

if(suma= =1)

romper;

if(a[i%N]!= 0)

{

k++; p> p>

}

if(k==S)

{

k=0; printf( "%4d",a[i%N]);

a[i%N]=0

suma--;

p>

}

if(i%N]!

}

for(i=0;i< N;i++)

if(a[i]! =0)

printf("%d\n el último número es: %d\n",a[i]) ;

}

Escribí esto hace dos años cuando era estudiante, ¡lo siento!