文章
52
粉丝
68
获赞
22
访问
11.6k
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
vector<int>a(n);
for(int i=0;i<n;i++)a[i]=i+1;
int k=0;
while(a.size()>1){
k=k+2>=a.size()?(k+2)%a.size():k+2;
a.erase(a.begin()+k);
}
cout<<a[0]<<endl;
}
}
跨步其实是2,虽说是3,index增长是2,然后第一个人不删除,删除后面的开始启动,如果反转这个情况,我们需要先删除后修正
登录后发布评论
本题本质上是约瑟夫问题的基础形式,在数量级很小的时候,可以采用栈和向量求解(vector就是向量)