Josephus prob使用数组?

时间:2014-10-22 20:56:00

标签: c++ josephus

http://en.wikipedia.org/wiki/Josephus_problem 用户可以选择圈子中有多少人。 用户可以选择每个人的价值。 用户可以选择人员死亡的计数。 恩。用户选择5,每5人就会死亡。

我在想像 - 用户选择ex-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

    }
}    

1 个答案:

答案 0 :(得分: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个人。