猴王算法精简版 Python实现
来源:互联网 发布:塔吊考试模拟考试软件 编辑:程序博客网 时间:2024/05/01 19:43
一个猴王算法,网上所列太过繁琐,问题很简单描述如下,
猴王算法:一群猴子围成一圈,从某一只开始数,数到m只剔除之,
后面的接着从一开始数,数到m剔除之,依次类推,剩下的最后一只为猴王
因为刚学习了Python,所以用她来编码,很优秀的编程语言哦
#!/usr/bin/python
# _*_ coding:UTF-8 _*_
# FileName: monkey.py
'''
Created on 2010-9-22
@author: wpjiyan Email:wpjiyan@163.com
'''
def getKingMonkey(mlist,m,index=1,debug=False):
'''返回数组mlist中从第index项开始数的去除第m只的猴王算法
mlist:猴子群组
m :去除第m只猴子
index:从第几只开始数
用要去除的第m只数和猴子数取模,加上要隔过的猴子数index,这样如果是从
第index只开始数应该去除的就第mn只猴子,
去除猴子后,这时mn如果比猴子数还大则说明下次要从第一只开始数,
'''
mn = m % len(mlist)
mn = mn + index -1
if mn > len(mlist):
mn = mn-len(mlist)
if mn == 0:
mn = len(mlist)
mlist.remove(mlist[mn-1])
if debug:
print '%s %d %d %d' %(mlist,m,index,mn)
if len(mlist) == 1:
return mlist[0]
if mn > len(mlist):
mn=1
return getKingMonkey(mlist,m,mn,debug)
if __name__ == '__main__':
abc = [1,2,3,4,5]
i = 5
while i < 11:
i += 1
monkey_king = getKingMonkey(abc,i)
abc = [1,2,3,4,5]
print '在%s里去除第%d只的猴王是%s' %(abc,i,monkey_king)
输出如下:
在[1, 2, 3, 4, 5]里去除第6只的猴王是4
在[1, 2, 3, 4, 5]里去除第7只的猴王是4
在[1, 2, 3, 4, 5]里去除第8只的猴王是1
在[1, 2, 3, 4, 5]里去除第9只的猴王是2
在[1, 2, 3, 4, 5]里去除第10只的猴王是4
在[1, 2, 3, 4, 5]里去除第11只的猴王是5
- 猴王算法精简版 Python实现
- 猴王算法
- php 猴王算法
- Python 之真假“美猴王”
- Python 之真假“美猴王”
- Python 之真假“美猴王”
- Python 之真假“美猴王”
- python+tornado 实现消息推送功能【精简版】
- Kmeans聚类算法 java精简版设计实现编程
- 机器学习算法(精简版)
- KMP算法Java精简版
- KMP算法原理与实现(精简)
- 猴王问题-踢猴子问题-约瑟夫算法
- 实现精简版string类
- Python刷网页(精简版)
- Python糗百爬虫(精简版)
- KMP算法自己整理(精简版)
- 红黑树的实现(int精简版)
- PlayStation的CD格式
- vc开发一些处理
- 字典树
- 心情
- 循环双击文字出现编辑文本框的JS代码(csdn 自己回贴处理的JS)
- 猴王算法精简版 Python实现
- 人生的第一篇博客要献出去了!
- JavaScript版本一览
- window.open 与 window.showModalDialog比较
- 插入排序算法函数(算法导论)
- Hibernate HQL 分组求和查询
- XP系统Ghost后登录时自动注销的解决方法
- ARMA模型仿真改进及灰色理论的故障预测
- 动态列转行