zoukankan      html  css  js  c++  java
  • 猴子选大王问题(Monkey King)

      猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈,

      从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

      经典算法(C#版本)

    1         public int King(int M, int N)
    2         {
    3             //总猴数 M ,数到第 N 个排除。 
    4             int k = 0;
    5             for (int i = 2; i <= M; i++)
    6                 k = (k + N) % i;
    7             return ++k;
    8         }  
     经典算法(python版本py 2.7)
    1 def king(m,n):
    2     l,i=range(m),0    #构造list代表猴子,i记录点名的次数,没点名时候记0
    3     while len(l)>1:    #当猴子数目大于一个时候
    4         k=l.pop(0)      #点到名字的猴子出列
    5         i+=1              #点名次数+1      
    6         if i%n!=0:      #不是n*x次被点名的猴子站到队伍末尾,等待再次被点名
    7             l.append(k)
    8     return l[0]+1      #返回猴子的编号 list index默认0开始
     monkeyking特例时候的(python版本 py 2.7)
    1 #5只猴一圈,点到第3个时候出圈
    2 l=range(5)
    3 while (len(l)>1):
    4     l.append(l.pop(0))
    5     l.append(l.pop(0))
    6     l.pop(0)
    7 print l[0]+1
  • 相关阅读:
    Consul 原理
    google ads api —— budget
    rabbitmq 启动报错 Kernel pid terminated
    maven 打依赖包命令
    【原创】Linux基础之supervisor
    Git 常用命令
    Thinkpad T14 AMD版无线网卡不可用
    在Windows10中安装解压版MySQL 8.X
    Git 分支管理参考模型
    Feign入门介绍
  • 原文地址:https://www.cnblogs.com/hello1123/p/7360145.html
Copyright © 2011-2022 走看看