64,637
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <vector>
#include <deque>
#include <list>
#include <iterator>
using namespace std;
template <typename T>
int yuesefu(int n,int m,T&s)//n为人数 m为数到m退出
{
int j=1;
s.clear();
for (int i=1;i<=n;i++)
{
s.push_back(i);
}
typename T::iterator iter;
while (s.size()>1)
{
for(j=1;j!=m;++j)
{
iter=s.begin();
s.push_back(*iter); //不断的把前面的数据放到后面
iter=s.erase(iter);//然后删除前面的数据
}
iter=s.erase(iter);//把数到m的删掉
/*if(s.size()<5)
{
for(typename T::iterator i=s.begin();i!=s.end();i++)
{
cout<<*i<<" ";
}
cout<<endl;
}*/
}
return *s.begin();
}
int main()
{
vector<int> s(1);
cout<<yuesefu(129,7,s)<<endl;
deque<int> s2(1);
cout<<yuesefu(129,7,s2)<<endl;
list<int> s1(1);
cout<<yuesefu(129,7,s1)<<endl;
return 0;
}
iter=s.begin();
s.push_back(*iter); //不断的把前面的数据放到后面
iter=s.begin(); //增加一行
iter=s.erase(iter);//然后删除前面的数据