zoukankan      html  css  js  c++  java
  • python解约瑟夫环问题

    故事:

    约瑟夫问题(Josephus Problem)据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
    然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

    原题:

    用户输入M,N值,N个人围成一个环,从0号人开始数,数到M,那个人就退出游戏,直到最后一个人
    求最后一个剩下的人是几号?
    (约瑟夫环问题 Josephus)

    首先是比较容易看得懂的。。

    Python代码
    1. def Josephus(n,m):  
    2.     #自动身成列表,从0开始 到n-1  
    3.     people = list(range(n))  
    4.     m-=1  
    5.     k=m%n;  
    6.     while(len(people ) >1):  
    7.         del list[k]  
    8.         k= (k+m) % len(people )  
    9.     return people [0]  

    说实话,感觉还是因为python的数据结构强大,list del掉自动补位,其他语言估计要费力些

  • 相关阅读:
    Apache 浏览器访问限制配置
    Apache 防盗链配置
    Apache 静态缓存配置
    Apache 日志管理
    Apache 域名跳转配置
    搭建完全分布式的hadoop[转]
    Laravel Cheat 表 http://cheats.jesse-obrien.ca/#
    spring-data-mongodb必须了解的操作
    Java MongoDB 资料集合
    MongoDB分片技术[转]
  • 原文地址:https://www.cnblogs.com/luxiaorui/p/3930989.html
Copyright © 2011-2022 走看看