Джозефус проб, используя массивы?

http://en.wikipedia.org/wiki/Josephus_problem
Пользователь может выбрать, сколько людей в круге.
Пользователь может выбрать стоимость каждого человека.
Пользователь может выбрать счетное число для смерти людей.
ех. Пользователь выбирает 5, каждый пятый должен умереть.

Я думал что-то вроде —
Пользователь выбирает количество человек из 50
PeopleArray становится PeopleArray [50]

Пользователь выбирает значение элементов в PeopleArray [50] Они должны будут ввести 50 значений для 50 элементов

Смерть
Пользователь выбирает 3, так что каждый третий человек умирает, как бы я стер это число из массива.

Проблема ^ -Не уверен, как это сделать с массивами

    int main(){
int people = 5;
int peopleArray[5];
int peopleValue = 1;
int death;

cout << "Enter the amount of people: ";
cin >> people;

peopleArray[people];

for(int x = 1;x<=people;x++){
cout << "Enter the value of person #" << x << ":";
cin>> peopleValue;
peopleArray[peopleValue]; //Suppose to put the value into the array

}
}

0

Решение

Если я правильно вас понимаю, то, что вы пытаетесь сделать, было бы что-то вроде …

vector<int> totalPeople;
int totalIn;
int deathIn;
int person = 1;
int nthPerson = 0;

cout << "Enter total number of people." << endl;
cin >> totalIn;
cout << endl << "Pick the nth person." << endl;
cin >> deathIn;

for ( int i = 0; i < totalIn; i++ )
{
totalPeople.pushback(person++);
}
nthPerson = deathIn - 1;
while ( nthPerson < totalPeople.size() )
{
totalPeople.erase(totalPeople.begin() + nthPerson);
nthPerson = nthPerson + (deathIn -1);
}

или скажите, что totalPeople [nthPerson] = 0;
Это удалит n-го человека из общего списка людей.

0

Другие решения


По вопросам рекламы [email protected]