约瑟夫问题的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 27 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
Dec 09 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
python 中如何获取列表的索引
Jul 02 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 Python
python基于Selenium的web自动化框架
Jul 14 Python
Python Django 实现简单注册功能过程详解
Jul 29 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
django 装饰器 检测登录状态操作
Jul 02 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
使用python实现学生信息管理系统
Feb 25 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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 iconv函数的使用详解
2013/06/09 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
不安全的常用的js写法
2009/09/15 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
js实现登录与注册界面
2017/11/01 Javascript
React中的render何时执行过程
2018/04/13 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
法国房车租赁网站:Yescapa
2019/08/26 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
应届生英语教师求职信
2013/11/05 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
创意婚礼策划方案
2014/05/18 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
冰雪公主观后感
2015/06/16 职场文书
公务员处分决定书
2015/06/25 职场文书
二胎满月酒致辞
2015/07/29 职场文书
教师培训学习心得体会
2016/01/21 职场文书
高三物理教学反思
2016/02/20 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android