约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。

 def fnA(p, personNum, cnt):
times = cnt // personNum + 1
temp = []; for t in range(times):
temp = temp + p p2 = p[:]
p2.remove(temp[cnt-1])
return p2 def fnB(p, cnt):
pa = p[:cnt-1]
pb = p[cnt:]
p = pb + pa
return p cnt = 8 #M
personNum = 12 #N persons = ["p"+ str(x) for x in range(1, personNum+1)]
print(persons) personNum = len(persons)
if cnt < personNum:
while True:
persons = fnB(persons, cnt)
print(persons)
if len(persons) <= cnt:
break personNum = len(persons)
while True:
persons = fnA(persons, personNum, cnt)
print(persons)
if len(persons) == 1:
break
else:
personNum = personNum - 1;

改变M和N的值,将会得到不同的值,如下运行效果

如约瑟夫问题,社会永不停息地淘汰着一批批人,那谁又将是最后的幸运者呢。。。

我也不知道,天气好冷,我脚都冻僵了,该睡觉了,晚安!

最新文章

  1. Java JDBC Thin Driver 连接 Oracle 三种方法说明(转载)
  2. 关于OC中的block自己的一些理解(一)
  3. iOS - 利用runtime加深对基础知识的理解
  4. chromium浏览器开发系列第四篇:如何调试最新chromium源码
  5. Linux下缓冲区溢出攻击的原理及对策(转载)
  6. Loadrunner通过sitescope监控mysql
  7. 设置ORACLE环境变量
  8. 较详细的sqlserver数据库备份、恢复(转)
  9. Hadoop: HDFS 格式化时,出现 &ldquo;ERROR namenode.NameNode: java.io.IOException: Cannot create directory /usr/hadoop/tmp/dfs/name/current&rdquo;
  10. git使用命令总结
  11. C# 通过 oledb 操作Excel
  12. 两点补充——CSS3新属性以及弹性布局
  13. WPF自学入门(二)WPF-XAML布局控件
  14. Swift中的&quot;可溢出&quot;算术运算符
  15. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
  16. JavaScript黑客是这样窃取比特币的,Vue开发者不用担心!
  17. 浅谈Kotlin(四):控制流
  18. SwingBench 字符模式压测最佳实践
  19. Geoserver
  20. 基于特征码文件恢复工具magicrescue

热门文章

  1. JavaScript 正则表达式RegExp 和字符串本身的正则表达式
  2. [日常] Apache Order Deny,Allow的用法
  3. [PHP] 重回基础(Array相关函数)
  4. JVM内存问题定位
  5. google vue开发调试插件,简便安装,亲测可用
  6. 导航栏布局时遇到的问题以及解决办法 css选择器优先级
  7. Atitit.resin&#160;&#160;could&#160;not&#160;create&#160;the&#160;java&#160;virtual&#160;machine问题
  8. 增加图例 Legend和删除图例
  9. ARCGIS知乎上的好文章
  10. linux yum list、search、-y、install、update、remove、grouplist、groupinstall、groupremove