el problema de josephus
Publicado por jamile moreno (1 intervención) el 12/03/2006 18:13:05
por favor ayudeme con EL PROGRAMA DE JOSEPHUS EN C
Valora esta pregunta


0
//output: posición del sobreviviente
Figura4: cuando n=100 y m=5
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main() {
int n, m, A[100], num, cont, tmp, cont_eliminados;
cout << "inserte la cantidad de personas q jugaran al juego de Josephus: ";
cin >> n;
cout << "inserte la razón con la que irán eliminándose: ";
cin >> m;
//primero llenar el array con números sucesivos den 1 a n
num = 0;
cont = 0;
cont_eliminados = 0;
for (int i = 0; i < n; i++) {
num++;
A[i] = num;
}
//imprimiendo el array con los números
for (int i = 0; i < n; i++) {
cout << A[i] << " ";
}
cout << endl;
//eliminando de acuerdo a la razón m
for (int i = 0; i < n; i++) {
if (A[i] <= n) {
cont++;
if (cont == m) {//elimina a razón de m
tmp = A[i];
A[i] = n + 1;
cont = 0;
}
if (i == n - 1) {
i = -1;
cont_eliminados = 0;
}
}
//conteo de los eliminados
if (A[i] == n + 1) {
cont_eliminados++;
if (cont_eliminados == n - 1) {
i = n;
}
if (i == n - 1 && cont_eliminados < n - 1) {
i = -1;
cont_eliminados = 0;
}
}
}
for (int i = 0; i < n; i++) {
if (A[i] != n + 1) {
cout << "El sobreviviente es el de la posición: " << A[i] << endl;
}
}
return 0;
}