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解决约瑟夫环问题相关推荐

  1. 循环链表解决约瑟夫环问题

    约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? "约瑟夫环是一个数学的应用问题:已知 ...

  2. 用java解决约瑟夫循环问题,Java实现循环列表解决约瑟夫环问题

    约瑟夫环:共有n个人围成一圈,从1开始报数,数到m的人出圈,求最后幸运者序号?? 下面用Java实现循环列表解决这个问题: package com.iteye.ljmdbc7a; import jav ...

  3. java实现环形链表解决约瑟夫环问题

    什么是环形链表? 环形链表就是单向链表的基础上让链表的首尾相连,形成一个环,这就是一个循环链表. 什么是约瑟夫环问题? 约瑟夫环如下: 约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数, ...

  4. C语言使用数组和循环解决约瑟夫环问题

    C语言使用数组和循环解决约瑟夫环问题 约瑟夫入狱,监狱内共有 33 个犯人.某日 33 名犯人围成一圈,从第一个犯人开始报数,报到数字 7 的犯人出列, 被枪毙,下一名犯人重新从 1 开始报数.依次类 ...

  5. 【图解经典算法题】如何用一行代码解决约瑟夫环问题

    约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼. 问题描述:编号为 1-N 的 N 个 ...

  6. python解决约瑟夫环(杀人游戏)

    约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3-n分别表示)围坐在一张圆桌周围.从第s个人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此 ...

  7. 使用队列解决约瑟夫环问题

    题目描述: 首先,让小朋友们围成一个大圈.然后,随机指定一个数m,让编号为0的小朋友开始报数.每次喊到m-1的那个小朋友要出列唱首歌,并且不再回到圈中,从他的下一个小朋友开始,继续0-m-1报数-这样 ...

  8. 从农夫砍大白菜到解决约瑟夫环的问题!

    先简单说一下 农夫砍白菜的问题. 在一个院子里农夫中了一圈n颗大白菜,到了收货的季节.,作为一名有理想的农夫决定没数三个数就砍掉一颗,然后接着开始数三个数继续.. 问 砍掉头m颗白菜的顺序是什么? 这 ...

  9. 消除左递归c++代码_【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体...

    题目链接 LeetCode 390. 消除游戏[1] 题目描述 给定一个从 到 排序的整数列表. 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾. 第二步,在剩下的数字中,从右 ...

最新文章

  1. 2020年人工神经网络第二次作业-参考答案第五题
  2. apache 与 php-fpm 几种处理方式
  3. ACM如何产生各种随机数
  4. 信息系统项目管理师优秀论文:项目风险管理--jiangyiwu
  5. ionic上拉加载-下拉刷新
  6. 【基础】有关T-SQL的10个好习惯
  7. 【渝粤教育】 国家开放大学2020年春季 1009离散数学(本) 参考试题
  8. Java Long类shortValue()方法与示例
  9. linux中进程pts 1和pts 3,termial创建时ptmx与pts的关系
  10. 删除Windows 文本右键选项
  11. 在浏览器里友好的变量输出查看函数方法
  12. apache php 搭建 nagios 平台
  13. 这段iframe代码可以盖住dropdownlist
  14. Tomcat+Servlet面试题都在这里
  15. php获取sqlserver时间,PHP_php操作sqlserver关于时间日期读取的小小见解,上周五,要做一个php 同时对mys - phpStudy...
  16. 战网在线更改服务器,暴雪的“战网”是如何从无到有 并改变了在线游戏的?...
  17. Uncaught initialization exception thrown by servlet
  18. erlang底层c定时器设计-Erlang源码学习二
  19. IOS生物信息验证(Touch IDFace ID)
  20. 高等数学笔记-乐经良老师-第五章-积分(Ⅱ)-定积分的应用-第六节-定积分的应用

热门文章

  1. 全球首个AI驾校教练+驾照考官已上岗,装手机里就能用,再也不怕挨教练骂了...
  2. 英特尔AI医疗实战手册曝光:医生诊断提速10倍,推理时间减少85%
  3. 能直接下载了!微软最爽命令行工具登陆Windows 10,GitHub标星已破4万6
  4. (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat
  5. 多线程——实现Callable接口
  6. Asp.Net 之 下载文件的常用方式
  7. android多种方式实现异步加载图片
  8. 用 Windows Live Writer 2009 为我们的博客园写博客(图)
  9. 手机+笔记本上NET网教程--5步让你轻松上网
  10. 3em html5,谁是最好的手机浏览器:IE9 VS Safari 5