PHP解决约瑟夫环问题
PHP解决约瑟夫环问题
一、总结
二、PHP解决约瑟夫环问题
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。
1 //PHP解决约瑟夫环问题 2 //方法一 3 function joseph_ring($n,$m){ 4 $arr = range(1,$n); 5 $i = 0; 6 while(count($arr)>1){ 7 $i=$i+1; 8 $head = array_shift($arr); 9 if($i%$m != 0){ //如果不是则重新压入数组 10 array_push($arr,$head); 11 } 12 } 13 return $arr[0]; 14 } 15 //方法二 16 function joseph_ring2($n,$m){ 17 $r = 0; 18 for($i=2;$i<=$n;$i++){ 19 $r = ($r+$m)%$i; 20 } 21 return $r + 1; 22 } 23 echo "<br/>".joseph_ring(60,5)."<br/>"; 24 echo "<br/>".joseph_ring2(60,5)."<br/>";
方法一直接模拟
PHP解决约瑟夫环问题相关推荐
- 循环链表解决约瑟夫环问题
约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? "约瑟夫环是一个数学的应用问题:已知 ...
- 用java解决约瑟夫循环问题,Java实现循环列表解决约瑟夫环问题
约瑟夫环:共有n个人围成一圈,从1开始报数,数到m的人出圈,求最后幸运者序号?? 下面用Java实现循环列表解决这个问题: package com.iteye.ljmdbc7a; import jav ...
- java实现环形链表解决约瑟夫环问题
什么是环形链表? 环形链表就是单向链表的基础上让链表的首尾相连,形成一个环,这就是一个循环链表. 什么是约瑟夫环问题? 约瑟夫环如下: 约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数, ...
- C语言使用数组和循环解决约瑟夫环问题
C语言使用数组和循环解决约瑟夫环问题 约瑟夫入狱,监狱内共有 33 个犯人.某日 33 名犯人围成一圈,从第一个犯人开始报数,报到数字 7 的犯人出列, 被枪毙,下一名犯人重新从 1 开始报数.依次类 ...
- 【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼. 问题描述:编号为 1-N 的 N 个 ...
- python解决约瑟夫环(杀人游戏)
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3-n分别表示)围坐在一张圆桌周围.从第s个人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此 ...
- 使用队列解决约瑟夫环问题
题目描述: 首先,让小朋友们围成一个大圈.然后,随机指定一个数m,让编号为0的小朋友开始报数.每次喊到m-1的那个小朋友要出列唱首歌,并且不再回到圈中,从他的下一个小朋友开始,继续0-m-1报数-这样 ...
- 从农夫砍大白菜到解决约瑟夫环的问题!
先简单说一下 农夫砍白菜的问题. 在一个院子里农夫中了一圈n颗大白菜,到了收货的季节.,作为一名有理想的农夫决定没数三个数就砍掉一颗,然后接着开始数三个数继续.. 问 砍掉头m颗白菜的顺序是什么? 这 ...
- 消除左递归c++代码_【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体...
题目链接 LeetCode 390. 消除游戏[1] 题目描述 给定一个从 到 排序的整数列表. 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾. 第二步,在剩下的数字中,从右 ...
最新文章
- 2020年人工神经网络第二次作业-参考答案第五题
- apache 与 php-fpm 几种处理方式
- ACM如何产生各种随机数
- 信息系统项目管理师优秀论文:项目风险管理--jiangyiwu
- ionic上拉加载-下拉刷新
- 【基础】有关T-SQL的10个好习惯
- 【渝粤教育】 国家开放大学2020年春季 1009离散数学(本) 参考试题
- Java Long类shortValue()方法与示例
- linux中进程pts 1和pts 3,termial创建时ptmx与pts的关系
- 删除Windows 文本右键选项
- 在浏览器里友好的变量输出查看函数方法
- apache php 搭建 nagios 平台
- 这段iframe代码可以盖住dropdownlist
- Tomcat+Servlet面试题都在这里
- php获取sqlserver时间,PHP_php操作sqlserver关于时间日期读取的小小见解,上周五,要做一个php 同时对mys - phpStudy...
- 战网在线更改服务器,暴雪的“战网”是如何从无到有 并改变了在线游戏的?...
- Uncaught initialization exception thrown by servlet
- erlang底层c定时器设计-Erlang源码学习二
- IOS生物信息验证(Touch IDFace ID)
- 高等数学笔记-乐经良老师-第五章-积分(Ⅱ)-定积分的应用-第六节-定积分的应用
热门文章
- 全球首个AI驾校教练+驾照考官已上岗,装手机里就能用,再也不怕挨教练骂了...
- 英特尔AI医疗实战手册曝光:医生诊断提速10倍,推理时间减少85%
- 能直接下载了!微软最爽命令行工具登陆Windows 10,GitHub标星已破4万6
- (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat
- 多线程——实现Callable接口
- Asp.Net 之 下载文件的常用方式
- android多种方式实现异步加载图片
- 用 Windows Live Writer 2009 为我们的博客园写博客(图)
- 手机+笔记本上NET网教程--5步让你轻松上网
- 3em html5,谁是最好的手机浏览器:IE9 VS Safari 5