Red de conocimiento informático - Conocimiento de la instalación - Utilice el lenguaje C para escribir el problema bidireccional de vida o muerte de Joseph, no utilice C++.

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; }