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掉自动补位,其他语言估计要费力些

  • 相关阅读:
    [PHP] PHP1 与 CGI
    [PHP] Phalcon操作示范
    [Shell] swoole_timer_tick 与 crontab 实现定时任务和监控
    [PHP] Phalcon应用升级PHP7记录
    [GNU] 喝一杯咖啡, 写一写 Makefile
    [PHP] Xhprof 非侵入式使用指南
    [PHP]OOP两类写法的性能对比
    [OSI] 网络间通信流程
    [OSI] 网络7层模型的理解
    [Tools] Vim 插件管理
  • 原文地址:https://www.cnblogs.com/luxiaorui/p/3930989.html
Copyright © 2011-2022 走看看