m0_74298567 2023-06-10 10:44 采纳率: 100%
浏览 25
已结题

c语言初学者的一个问题

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到M,凡报到M的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

  • 写回答

3条回答 默认 最新

  • Watch the clown 2023-06-10 10:49
    关注

    约瑟夫环一般就是解决这种问题的最好算法

    #include <stdio.h>
    #include <stdlib.h>
    int yue(int n,int m)
    {
        int y;
        if(n==1){
            y = 0;
        }else if(n>1){
            y = (yue(n-1,m)+m)%n;
        }
        return y;
    }
    int main()
    {
        int n,y;
        scanf("%d",&n);
        int m = 3;
        y = yue(n,m)+1;
        printf("%d",y);
        return 0;
    }
    
    
    
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月4日
  • 专家已采纳回答 6月26日
  • 创建了问题 6月10日