hdu 1276 士兵队列训练问题(STL的list)
#include<stdio.h> #include<list> using namespace std; list<int>li; list<int>::iterator it; int main() { int _case,n; scanf("%d",&_case); while(_case--) { li.clear(); scanf("%d",&n); for(int i=1; i<=n; i++) li.push_back(i); int k=0; while(li.size()>3) { int k1=0,k2=1; if(!k) { for(it=li.begin(); it!=li.end();) { if(k1) { it=li.erase(it); k1=0; } else { k1=1; it++; } } k=1; } else { for(it=li.begin(); it!=li.end();) { if(k2==3) { it=li.erase(it); k2=1; } else { k2++; it++; } } k=0; } } it=li.begin(); printf("%d",*it); it++; for(; it!=li.end(); it++) printf(" %d",*it); printf("\n"); } return 0; }
删除的注意:
it=li.erase(it);指向删除后的后一个元素;