POJ 3750 小孩报数问题 题目链接:http://poj.org/problem?id=3750
题目分析:约瑟夫环的过程模拟,水无坑。
code:
#include<stdio.h>
#include<queue>
#include<string>
#include<iostream>
using namespace std;
deque<string>q;
int main()
{
int i,n,w,s,p,eraseNum;
char c;
string name;
cin>>n;
for(i=0;i<n;i++)
{
cin>>name;
q.push_back(name);
}
cin>>w>>c>>s;
p=w-1;
eraseNum=0;
while(!q.empty())
{
p=(p+s-1)%(n-eraseNum);
cout<<q.at(p)<<endl;
q.erase(q.begin()+p);
eraseNum++;
}
return 0;
}
PS:复习了一下STL,发现自己水成狗了…STL基本忘光,现记下几点这次犯的错误①容器里不能放指针(如char*这样的东西)②随机访问很成问题,尤其是erase的时候,如果不用q.begin()+p必错