题解 | 约瑟夫环

约瑟夫环

https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
void solve(){
    //输入
    int n,k,m;
    cin>>n>>k>>m;
    m %= n;
    vector<int> arr(n);
    //每个数组元素记录编号
    for(int i=0;i<n;i++){
        arr[i]=i;
    }
    int len=n;
    while(len>1){
        k = (k+m-1)%len;//每次找到要删除的下标,灵感来源于数据结构循环队列
        arr.erase(arr.begin()+k);//删除对应编号
        len--;

    }
    cout<<arr[0];


}
int main() {
    solve();
    return 0;
}

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务