Utilice el lenguaje C para escribir el problema bidireccional de vida o muerte de Joseph, no utilice C++.
Se dice que el famoso historiador judío Josefo contó una vez la siguiente historia: Después de que los romanos capturaron Chotapat, 39 judíos se escondieron en una cueva con Josefo y sus amigos. 39 judíos decidieron morir antes que rendirse y decidieron suicidarse. 41 personas se alinean en un círculo, y la primera persona comienza a informar el número de personas. Cada vez que se cuenta a la tercera persona, debe suicidarse.
Luego la siguiente persona informará el número de personas. . Cada vez que se cuenta a la tercera persona, esa persona debe suicidarse.
Luego la siguiente persona repite el conteo hasta que todos se suicidan.
Sin embargo, José y sus amigos no querían hacer esto, así que José les pidió a sus amigos que fingieran hacerlo primero, y clasificó a sus amigos y a él mismo
16 y 16 31 , escapando así del juego de la muerte.
Solución El problema de Josefo se puede resolver algebraicamente ampliándolo, asumiendo que tú y mis amigos desafortunadamente ahora estáis participando en el
juego. Simplemente dibuja dos círculos para salvarte a ti y a tus amigos del juego de la muerte
El círculo interior es el orden del arreglo y el círculo exterior es el orden del suicidio, como se muestra en la siguiente figura:
Para resolver este problema usando un programa, simplemente trate la matriz como un anillo, comenzando en el conteo 1 en la matriz y completando un conteo por cada tres regiones no informativas encontradas, hasta que el conteo llegue a 41. Cuando el conteo llegue a 41, comience la matriz desde el índice 1 y podrá conocer el orden de suicidio en cada posición. Este es el arreglo de José, las 41 personas y el arreglo de Yochenov con el número 3. se muestra a continuación:
14 36 1 38 15 2 24 30 3 16 34 4 25 17 5 40 31 6 18 26 7 37 19 8 35 27 9 20 32 10 41 21 11 28 39 12
p>
22 33 13 29 23
Como se puede ver en lo anterior, la última persona en suicidarse está en la posición 31 y la penúltima persona en suicidarse está en la posición 16. El primero
p>La gente está muerta, por lo que no saben nada de Yochenov y no siguieron las reglas del juego.
#include
#include
#define N 41
#define M 3
int main(void) {
int hombre[N] = {0};
int recuento = 1;
int i = 0, pos = -1;
int vivo = 0;
mientras(cuenta <= N) {
hacer {
pos = (pos+1) % N; //procesamiento de bucle if(man[pos] == 0)
i++;
if(i == M) { //informe número 3 ahora
i = 0;
break;
}
} while(1);
man[pos] = contar;
contar++;
}
printf("\n alineación de Yochenov: ");
for(i = 0; i < N; i++)
printf("%d ", man[i]);
printf("\n\n ¿Cómo ¿Cuántas personas quieres salvar?") ;
scanf("%d", &alive);
printf("/nL significa salvar a esta %d persona Donde:\ n", vivo);
for(i = 0; i < N; i++) {
if(hombre[i] > vivo)
printf( "D" );
else
printf("L");
if((i+1) % 5 == 0) printf("
");
}
printf("/n");
devuelve 0; }