`
darklipeng
  • 浏览: 126171 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

python解约瑟夫环问题

阅读更多

故事:

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

 

原题:

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

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

def solve(n,m):
    #自动身成列表,从0开始 到n-1
    list=range(n)
    m-=1
    k=m%n;
    while(len(list) >1):
        del list[k]
        k= (k+m) % len(list)
    return list[0]

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

 

 

 

分享到:
评论
1 楼 daly1987 2011-12-10  
标记一下,学习Python,不过话说回来,python在企业级应用来说还是不行啊。

相关推荐

    用LabVIEW编写的解约瑟夫环问题

    用LabVIEW编写的解约瑟夫环问题的程序。可以自己设置参数和变量。

    解约瑟夫问题(及求解规律)(Python实现)

    解约瑟夫问题(及求解规律)(Python实现)

    多瑟夫环问题单向循环链表

    多瑟夫环问题单向循环链表 在计算机科学中,多瑟夫环问题是一种经典的问题,描述的是一个编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码。该问题的解决可以使用单向循环链表来实现。下面是多瑟夫...

    瑟夫环问题及其链表实现

    约瑟夫问题:编号为1,2,3,……,n的n个人按顺时针方向围坐一圈。任选两个正整数作为报数下限s和报数上限m,从第一个人开始按顺时针方向自s开始顺序报数,报到m时停止报数。报m的人出列,从他在顺时针方向上的下一...

    瑟夫环问题(rotate解法)

    瑟夫环问题(Sieve of Eratosthenes),是一种古老而有效的算法,用于寻找小于给定数的所有质数。这个算法是由古希腊数学家埃拉托斯特尼提出,因此得名。在C++编程中,我们可以利用STL(Standard Template Library)...

    瑟夫环基于数据结构链表

    数据结构的课设,瑟夫环,通过简单的输入设置,来设定开始位置,报数大小,从而不断将报到的人移除

    瑟夫环及其链表实现

    瑟夫环问题的c++实现,希望能解决这一难题,对大家有所帮助

    不用链表解约瑟夫

    不使用链表解决约瑟夫问题

    数据结构课程设计约瑟夫环问题

    [问题描述] 编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将...

    数据结构的约瑟夫患问题

    5. **输出结果**:在报数过程中,记录下出列的顺序,最后按顺序打印出列的编号,即为解约瑟夫环问题的结果。 在实现这个算法时,我们需要以下几个关键操作: - **InitList**: 初始化链表,创建一个空的循环链表。 ...

    瑟夫芯片\sirf3模块原理

    根据提供的标题、描述以及部分文档内容,我们可以了解到这是关于瑟夫芯片(Sirf3)模块原理的介绍。在市面上较为少见的信息中,这份文档提供了有关Sirf3芯片的关键设计细节和技术参数。接下来,我们将深入探讨这份...

    13.安瑟夫矩阵[整理].pdf

    【安瑟夫矩阵】,又称为产品市场扩张矩阵,是由伊戈尔·安索夫提出的一种企业增长策略框架,主要用于帮助企业识别和选择实现销售与利润增长的策略。这个矩阵主要包含四种密集型增长策略:市场渗透、市场开发、产品...

    约瑟夫环改进问题,K个好人与K个坏人,好人出局之前坏人需全部出局

    约瑟夫环(Josephus Problem)是一个经典的理论问题,源于罗马历史学家约瑟夫斯的一段叙述。在原始问题中,人们站成一个圈,并按照某种顺序依次淘汰,直到只剩下一个人才停止。在这个改进的问题中,我们引入了好人与...

    单项链表模拟约瑟夫环

    通过本篇文章的介绍,我们了解了约瑟夫环问题的背景、单项链表的概念及其在C语言中的实现方式,并且详细分析了如何利用单项链表来解决约瑟夫环问题。这种方法不仅简洁高效,而且易于理解和实现,是学习数据结构和...

    瑟夫241169111111111

    5. **未来网络技术**:如IPv6的引入,以解决IPv4地址耗尽的问题,以及量子通信和边缘计算等新兴技术。 6. **网络编程**:学习如何利用TCP/IP进行网络编程,创建自己的服务器和客户端应用。 如果您能提供更具体的...

    瑟夫死亡游戏代码

    n个人围成一个圈 每隔3个人杀一个人 问最后剩下的人的编号 工具用ArrayList 每一次遍历整个队列 计算出总共被杀的人的所有位置 将计算出的位置的所有值设为0;然后将值为零的一次性删除 arrayList remove 0 ;...

    poj1005.zip_北大poj1005

    8. **递归与分治**:如快速幂运算、归并排序、分治法解约瑟夫问题等。 9. **贪心算法**:适用于部分最优解的问题,如霍夫曼编码、活动安排等。 10. **回溯法与剪枝**:用于解决约束满足问题,如八皇后问题、N皇后...

    纷纷威风威风瑟夫夫人沟通给

    1

    塞瑟夫

    "塞瑟夫"这个标题可能是指的Josephus问题,这是一个著名的理论计算机科学问题,与JavaScript编程语言有关。在Josephus问题中,人们站成一个圈,并按照某种顺序每k个人被淘汰,直到只剩最后一个人为止。这个问题是...

Global site tag (gtag.js) - Google Analytics