简洁之美 -约瑟夫环的python 解法
2015-10-07 17:19
399 查看
问题描述:
约瑟夫环问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人出列;他的下一个人又从1开始报数,数到k的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
解析一下: 主要用到python中列表(lsit)下标访问特性。之前构思用C++ 实现的时候,需要自己构建双向链表,才能实现。
百度时,发现一个更全的连接。
http://baike.baidu.com/link?url=jGCdWXzolqUD64rlcOTZ9Q4wuo_gl52RKKrAii6hMklSnQ1Us-5wT1mMJrE_YRDRDwgeCMNui0R5KasGhsEHDq#2_8
约瑟夫环问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人出列;他的下一个人又从1开始报数,数到k的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
print ("version: python3.4") def josephus(n,k): index=0 people=list(xrange(1,n+1)) while True: if len(people)==1: break index=(index+(k-1))%len(people) print('kill:',people[index]) del people[index] print('survive:',people[0]) if __name__=='__main__': josephus(8,3)
解析一下: 主要用到python中列表(lsit)下标访问特性。之前构思用C++ 实现的时候,需要自己构建双向链表,才能实现。
百度时,发现一个更全的连接。
http://baike.baidu.com/link?url=jGCdWXzolqUD64rlcOTZ9Q4wuo_gl52RKKrAii6hMklSnQ1Us-5wT1mMJrE_YRDRDwgeCMNui0R5KasGhsEHDq#2_8
相关文章推荐
- python os相关操作
- Python处理JSON
- [译]学习IPython进行交互式计算和数据可视化(三)
- [译]学习IPython进行交互式计算和数据可视化(二)
- [译]学习IPython进行交互式计算和数据可视化(一)
- Python GIL 多线程机制 (C source code)
- Python中基本语法
- python序列处理函数
- 《机器学习实战》kMeans算法(K均值聚类算法)
- 《机器学习实战》二分-kMeans算法(二分K均值聚类)
- 【Python】测试题
- 【Python】Learn Python the hard way, ex15 读取文件
- python zip用法
- 【Python】Learn Python the hard way, ex14 argv参数传值
- 使用 Python 进行线程编程
- python模糊查询
- Python标准库的学习准备
- Python标准库——走马观花
- <PY>感知机
- python设计模式1:创建型模式