题解 | 约瑟夫环 不用公式,暴力遍历

约瑟夫环

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

#include <iostream>

#include<vector>
using namespace std;

int main() {
    int n,k,m;
    cin>>n>>k>>m;
    vector<int>a(n,1);
    
    int remain=n;
  
    int q=0;
  //外层循环用来寻找还未被踢出的样本,到m之后把它踢出去
    while(remain>1)
    {
        int i=0;
        
	  //内层循环用来遍历数组,找出未被踢出去的样本
        while(true)
        {
            
            

            if(a[(k+q)%n]==1)
            {
                i++;
                if(i==m)
                {
                    a[(k+q)%n]=0;
                    break;
                }
            }

            q++;
        }
        q++;

        remain--;
        
    }



    int w;
    for(int i=0;i<n;i++)
    {
        if(a[i]==1)
        w=i;
    }
    cout<<w;

    
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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