一群小孩 围成一圈,任意假定一个数m,从第一个小孩起,按顺时针方向数,每数到第m个小孩时,该小孩便离开。小孩不断离开,圈子不断缩小。最后,剩下的一个小孩便是胜利者。
问题献上,狗头!
在上一章(25)已经用数组解决了这个问题,这章我将用vector解决这个问题,代码如下:
#include<iostream>
#include<vector>
using namespace std;
int main ()
{
int n;
cin>>n;
while(cin>>n)
{
vector<int > yc;
for(int i=1;i<=n;i++)
{
yc.push_back(i);
}
int pos=0;
for(int i=1;i<=n;i++)
{
pos=(pos+2)%yc.size();
yc.erase(yc.begin()+pos);
}
int *p=&yc[0];
cout<<*p<<endl;
}
}
Power!!!