Chinaunix首页 | 论坛 | 博客
  • 博客访问: 391647
  • 博文数量: 199
  • 博客积分: 154
  • 博客等级: 入伍新兵
  • 技术积分: 1530
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 08:43
文章分类

全部博文(199)

文章存档

2015年(101)

2014年(97)

2011年(1)

分类: Python/Ruby

2014-10-30 17:13:45

# -*- coding: UTF-8 -*-
'''
【程序69】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
   圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码: 
'''
def josephus(n,k):  
    if k==1:  
        print('survive:',n)  
        return  
    p=0  
    people=list(range(1,n+1))  
    while True:  
        if len(people)==1:  
            break  
        p=(p+(k-1))%len(people)  
        print('kill:',people[p])  
        del people[p]  
    print('survive:',people[0])  
  
if __name__=='__main__':  
    josephus(10,4)  
    josephus(10,2)  
    josephus(10,1) 
阅读(540) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~