用数组来遍历

#include<stdio.h>

int main()
{
    int arr[100]={0};
    int n=0;
    int k=0;
    int m=0;
    scanf("%d%d%d",&n,&k,&m);
    int cur=1;//报的序号
    for(int i=0;i<n;i++)
    {
        arr[i]=1;
    }
    int i=k-1;//遍历的编号编号,由于数组特性要减一
    int peo=n;//记录剩余人数
    
    while(peo!=1)
    {
        if(i>=n)
        {
            i=0;//人数报完了就重置
        }
        if(arr[i]==0)
        {
           i++;
           continue;//没有人了,就不能继续报数了,直接跳过即可
           
        }
        if(cur==m)
        {
            //需要判断淘汰后的情况
            
            arr[i]=0;
            peo--;
            cur=0;
        }
        
        cur++;
        i++;
    }
    for(i=0;i<n;i++)
    {
        if(arr[i]==1)
        {
            printf("%d\n",i+1);
            break;
        }
    }
    return 0;
}
全部评论

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务