Python教程

Python 7-14 猴子选大王 (20 分)

本文主要是介绍Python 7-14 猴子选大王 (20 分),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

传送门

猴子选大王问题实质是约瑟夫环问题:一圈人进行报数,报到数字3的人出列(相当于被杀死)之后他后面的人再从0开始报数,如此循环往复,最后剩下的那个伙计就是最幸运的(也是这个问题中的大王),关于这个问题,b站有很详细的讲解:https://www.bilibili.com/video/BV1cV411e7ph?from=search&seid=9609394249167015402

def choiceKing(maxNum,stepNum):
    data = []
    delData = []
    num = 0
    for i in range(1,maxNum+1):
       data.append(i)#把所有的猴子放到数组当中

    while len(data) > 1:
      num += 1
      temp = data.pop(0)
      if num == stepNum:#初始化为0
        delData.append(temp)#加入杀死序列
        num = 0 #重新设计为0
      else:
        data.append(temp)
    return{
        'lastData':data[0],
        'delData':delData
    }
monkey = int(input())
result = choiceKing(monkey,3)
print(result['lastData'])
#用python实现较为方便

 

 

 

这篇关于Python 7-14 猴子选大王 (20 分)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!