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;
}


京公网安备 11010502036488号