当前位置:首页 > 日记 > 正文

用PHP解决约瑟夫环算法实例

用PHP解决约瑟夫环算法实例
本文介绍了用PHP堆栈解决约瑟夫环问题的算法,供大家参考:

约瑟夫环问题:39个犹太人,约瑟夫斯和他的朋友们藏在山洞里,和39个犹太人决定死而不是被敌人抓住。我决定自杀,41人排成一圈,从第一个人开始数,报告数量的每个人在第三人必须自杀。然后重新关闭,直到每个人都打死为止自杀。然而,约瑟夫斯和他的朋友们不想遵守。约瑟夫斯让他的朋友先假装服从。他把自己的朋友安排在第十六个和第三十一个位置,所以他逃过了死神的游戏。
< PHP
类arraystack
{
私人大小;
私有$堆栈{ };
公共功能(__construct){ }
公共功能buildstack($num){
$;
指数= 0;
而(指数+大小)
{
$ >堆栈;
}
}
公共函数POP(){
项目= array_shift美元(美元->堆栈);
此$ =大小=计数($此堆栈);
返回$项;
}
公共功能推送($项目)
{
$ >堆栈;
此$ =大小=计数($此堆栈);
}
公共功能大小()
{
返回$ >大小;
}
公共功能堆栈()
{
返回这个堆栈;
}
}
约瑟夫接口
{
公共函数句柄($ = 0,$ = 0,幸存者= 0);
}
约瑟夫stackjoseph实现类
{
保护堆栈;
保护美元;
保护$步;
公共功能__construct(arraystack叠美元)
{
此堆栈;
}
公共函数句柄($ = 0,$ = 0,幸存者= 0)
{
实现句柄(方法):
美元->堆栈-> buildstack(美元数);
$ I = 0;
当($)-堆栈>大小()>幸存者时)
{
$;
如果(($ + 1)% $步!= 0)
{
这一点>堆栈>推($ POP);
美元+;
}
其他的
{
$ I = 0;
}
}
返回这个堆栈>堆栈();
}
}
函数的约瑟夫($民,一步survivorsnum美元,美元)
{
arraystack美元=新ArrayStack();
约瑟夫=新stackjoseph美元(美元arraystack);
返回的约瑟夫->处理($民,一步survivorsnum美元,美元);
}
print_r(约瑟夫(41, 3, 2));

实施结果:
阵列

{ 0 } = 16
{ 1 } = 31


关于PHP相关内容的更多读者感兴趣的读者可以看到特别站:PHP数据结构和算法教程

希望本文能对PHP程序设计有所帮助。

相关文章

Node.js使用orm2进行update操作时

Node.js使用orm2进行update操作时

修改,字段,操作,解决方法,电脑软件,前言最近在工作中遇到一个问题,在使用Orm2进行model修改时,发现当对关联字段进行update操作时,执行了2次SQL,第一次把值改为了我们期望的值,第二次又会把值改回成原来的值。经过调查,当autoFetch开启时,会自动取…

WPS文字中怎么制作联合发文文件头

WPS文字中怎么制作联合发文文件头

文件,文字,方法,发文,电脑软件,  WPS文字中怎么制作联合发文文件头?在WPS文字中,表格工具的作用不仅仅是用来制作表格的。活用表格,有时会收到意想不到的效果,完成一些特殊的任务。下面小编就教你WPS文字中制作联合发文文件头的方法。WPS文…

word页面设置为横向页面的方法

word页面设置为横向页面的方法

方法,横向,页面,设置为,电脑软件,word怎么设置为横向页面呢?在编辑word文档时,有时我们需要的横向长度不够长,这时候就需要把word的横向页面改为纵向页面,以下就是小编给大家分享的word页面设置为横向页面的方法。方法步骤如下:1.文件--页面设…

PHP使用PDO访问oracle数据库的步骤

PHP使用PDO访问oracle数据库的步骤

步骤,数据库,详解,电脑软件,PHP,前言PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为 PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5 的最新特性。PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RD…

PHP基于回溯算法解决n皇后问题的方

PHP基于回溯算法解决n皇后问题的方

方法,回溯算法,示例,皇后,电脑软件,本文实例讲述了PHP基于回溯算法解决n皇后问题的方法。分享给大家供大家参考,具体如下:这里对于n皇后问题就不做太多的介绍,相关的介绍与算法分析可参考前面一篇C++基于回溯法解决八皇后问题。回溯法的基本做…

WPS演示2013如何对进行淡化处理

WPS演示2013如何对进行淡化处理

演示,图片,电脑软件,WPS,  有时候插入图片之后,觉得颜色太鲜艳了,想要淡化色彩,其实并不难。以下是小编为您带来的关于WPS演示2013对图片进行淡化处理,希望对您有所帮助。WPS演示2013对图片进行淡化处理①启动WPS演示,插入图片之后,在图片上插…

ps怎么设计一个网络感十足的社交行

ps怎么设计一个网络感十足的社交行

网络,行业,社交,电脑软件,ps,ps中想要给网页设计一个科技感的banner,该怎么设计呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、新建文件,创建画布2、添加一个科技感的…

如何配置IIS运行 ASPX

如何配置IIS运行 ASPX

运行,配置,电脑软件,IIS,ASPX,如何配置IIS运行 ASPX最近在做 .ASPX 搞了好一阵子,才弄懂这个东西,和大家分享&hellip;&hellip; 欢迎讨论一、先注册asp.net组件: (asp.NET 组件即:.Net Framework )开始->运行->cmd->执行命令:C:\windows\Microsof…

web 开发之创建本地文件夹的实现方

web 开发之创建本地文件夹的实现方

方法,电脑软件,web,web 开发之创建本地文件夹的实现方法 filemanage_util.fullPath 就是创建文件的路径这是跨平台的创建文件夹,不像Android那样还要通过 Environment.getExternalStorageDirectory() 的原生代码来创建实现代码:document.addE…

php两个多维数组组合遍历的实例

php两个多维数组组合遍历的实例

遍历,多维数组,组合,实例,两个,实例如下:$res = $this->LoanRecord->searchloan($conditions,$columns,$page,$this->num,$user_id); foreach ($res[1] as $key => $value) { if(!empty($value['b']['id'])){ $result_day = $this->L…

php删除数组指定元素实现代码

php删除数组指定元素实现代码

元素,删除,数组,代码,电脑软件,php删除数组指定元素实现代码在PHP中删除数组指定元素的函数没有直接能使用的,多数只能封装方法例如array_slice() 函数在数组中根据条件取出一段值,并返回.array_slice(array,offset,length,preserve)array:数…

win2008 iis7如何取消目录的可执行

win2008 iis7如何取消目录的可执行

可执行,权限,取消,目录,电脑软件,服务器终于升级了,从原来的2003现在升级为2008系统,64位用超大内存来跑WEB,随之而来的一系例问题在家里做一个笔记,也希望能给看到的朋友有所帮助。我们需要把IIs中某一个目录的可执行权限去掉。这在IIs6中是非…