文章
33
粉丝
0
获赞
136
访问
3.8k
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n<=0) return 0;
list<int> lst;
for(int i=1;i<=n;i++) lst.push_back(i); //存 1,2,...,n
auto it = lst.begin();
while(lst.size()>1){//直到最后一个元素之前 都执行迭代
int d = 2;
while(d--){//移动 1->3 erase(3) 4->1 erase(1) 2->...
it++;
if(it==lst.end()) it = lst.begin();
}
it = lst.erase(it);//示例如下
/****
1 2 3 4 5
↑
it
it = lst.erase(it)
1 2 4 5
↑
it
****/
// cout<<"it = "<<*it<<endl; 调试,这里之前把auto it放while里面了,没看出哪里错.只能输出出来看情况
if(it == lst.end())it = lst.begin();
}
it = lst.begin();
cout<<*it;
return 0;
}
登录后发布评论
暂无评论,来抢沙发