题解 | #约瑟夫环#

约瑟夫环

https://ac.nowcoder.com/acm/problem/22227

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,k,m;
    cin>>n>>k>>m;
    int a[105]={0};    //数组元素为0表示未被淘汰,为1表示被淘汰
    int count=n;       //计数器,表示当前还未被淘汰的人数
    while(count!=1){   //仅剩的一人为王
        for(int i=1;i<=m-1;i++){ 
        //报数过程
        while(a[(k+1)%n]) k=(k+1)%n;
        k=(k+1)%n;
        }
         a[k]=1;    //置为淘汰
         count--;   //人数减少
         while(a[k]){    //移动k,至下一轮报数的第一个人
              k=(k+1)%n;
         }
    }
    cout<<k;  //最后一个人被淘汰之后,k移动到了仅剩的一人的序号,直接输出即可
}
全部评论
请问第二个while后面,k=(k+1)%n这个是什么含义呢
点赞 回复 分享
发布于 03-31 09:48 河南

相关推荐

点赞 评论 收藏
分享
评论
18
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务