vector和list和queue三种解法。
1.vector使用迭代器和erase进行删除模拟:
#include<iostream> #include<vector> using namespace std; int main(){ int n,flag; vector<int> vec; while(cin>>n){ if(n>1000)n=999; vec.clear(); for(int i=0;i<n;i++){ vec.push_back(i); } auto it=vec.begin(); while(vec.size()>1){ if(it+2==vec.end()){ it=vec.begin(); }else if(it+1==vec.end()){ it=vec.begin()+1; }else if(it==vec.end()){ it=vec.begin()+2; }else it+=2; it=vec.erase(it); if(it==vec.end())it=vec.begin(); } cout<<vec[0]<<endl; } return 0; }