约瑟夫问题的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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
对Python中plt的画图函数详解
Nov 07 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python:按行读入,排序然后输出的方法
Jul 20 Python
Python @property装饰器原理解析
Jan 22 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
Python实现粒子群算法的示例
Feb 14 Python
python如何进行基准测试
Apr 26 Python
pycharm代码删除恢复的方法
Jun 26 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
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
Python下线程之间的共享和释放示例
2015/05/04 Python
python和shell获取文本内容的方法
2018/06/05 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
pytorch 常用线性函数详解
2020/01/15 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
设计部经理的岗位职责
2013/11/16 职场文书
生产内勤岗位职责
2013/12/07 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
药品采购员岗位职责
2014/02/08 职场文书
教师师德反思材料
2014/02/15 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
社团活动总结
2014/04/28 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫
python画条形图的具体代码
2022/04/20 Python