约瑟夫问题的Python和C++求解方法


Posted in Python onAugust 20, 2015

么是约瑟夫问题?
约瑟夫问题是一个有趣的数学游戏,游戏规则如下:
1、N个人围成一个圈,编号从1开始,依次到N。
2、编号为M的游戏参与者开始报数,报数从1开始,后面的人报数接龙,直到K为止,报数为K的人将出局。
3、出局者的下一个玩家接着从1开始报数,如此循环,直到剩下一个玩家时游戏结束,这个玩家就是游戏获胜者。
那么问题来了,哪个编号是游戏获胜者呢?
下面通过简单的几行python代码来解决这个问题:

#!/usr/bin/env python 
# Joseph Problem 
def joseph(total, begins, count): 
  queue = range(1, total + 1) 
  death = (begins + count - 2) % len(queue) 
  for times in range(total - 1): 
    print 'out: ', queue[death] 
    del queue[death] 
    death = (death + count -1) % len(queue) 
  print 'survivor: ', queue[0]

joseph()函数中,参数total即上面提到的N,begins即M,count及K,每次循环报数out一个编号,最后剩下的survivor便是游戏获胜者。

而C++的通常实现方法如下:

#include <iostream>
using namespace std;
void main()
{
 int N=0,C=0;
 cout<<"Please enter the number of people:N=";
 cin>>N;
 cout<<"Please enter:C=";
 cin>>C;
 int i=0,j=0,n=N,s=0;
 int *a=new int [N];
 for (i=0;i<N;i++)
 {
 a[i]=1;
 }

 while(0!=n)
 {
 s+=a[j];
 if(C==s)
 {
  a[j]=0;
  s=0;
  --n;
  if(0!=n)
  {
  cout<<j+1<<"->";
  }
  else
  {
  cout<<j+1<<endl;
  }
 }
 j=(j+1)%N;
 }
 delete []a;
}

这是C++语言常见的机试题目,以下程序实现从控制台输入人数N,C并将剔除出队列的人员编号按顺序输出到控制台上。

Python 相关文章推荐
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
深入理解Python3中的http.client模块
Mar 29 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
python正则-re的用法详解
Jul 28 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
python scipy卷积运算的实现方法
Sep 16 Python
Python气泡提示与标签的实现
Apr 01 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
keras多显卡训练方式
Jun 10 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
在类Unix系统上开始Python3编程入门
Aug 20 #Python
Python中字典映射类型的学习教程
Aug 20 #Python
Python3字符串学习教程
Aug 20 #Python
Python中列表和元组的相关语句和方法讲解
Aug 20 #Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 #Python
使用Python求解最大公约数的实现方法
Aug 20 #Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 #Python
You might like
PHP实现文件下载断点续传详解
2014/10/15 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
JS实现简易日历效果
2021/01/25 Javascript
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
毕业生自荐书
2013/12/18 职场文书
幼儿教师培训感言
2014/03/08 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS