php约瑟夫问题解决关于处死犯人的算法

 这篇文章主要介绍了php约瑟夫问题解决关于处死犯人的算法,实例分析了php关于约瑟夫问题的实现与应用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

 
 

本文实例讲述了php约瑟夫问题解决关于处死犯人的算法。分享给大家供大家参考。具体分析如下:

古代某法官要判决IV个犯人的死刑,他有一条荒唐的法律将犯人站成一个圆圈,从第s个人开始数起,每到第D个人就拉出来处死,然后再数D个,再拉出来处决…… 直到剩下最后一个可以赦免.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

function getNum($n,$m){
//用于把所有的数存到数组初始化
$a = array();
//遍历,存入数组
for($i=1;$i<=$n;$i++){
$a[$i] = $i;
}
//指针归0
reset($a);
while(count($a)>1){
//如果数组中项大于1,继续循环剔除元素
//剔除规则
for($j=1;$j<=$m;$j++){
//如果没有达到数组的最后项
if(next($a)){
if($j==$m){
//删除m项
unset($a[array_search(prev($a),$a)]);
}
}else{
//如果next不存在,那么指针归0
reset($a);
if($j==$m){
unset($a[array_search(end($a),$a)]);
reset($a);
}
}
}
}
return current($a);
}
echo getNum(5,3);

希望本文所述对大家的php程序设计有所帮助。

时间: 2024-08-01 15:56:32

php约瑟夫问题解决关于处死犯人的算法的相关文章

php约瑟夫问题解决关于处死犯人的算法_php技巧

本文实例讲述了php约瑟夫问题解决关于处死犯人的算法.分享给大家供大家参考.具体分析如下: 古代某法官要判决IV个犯人的死刑,他有一条荒唐的法律将犯人站成一个圆圈,从第s个人开始数起,每到第D个人就拉出来处死,然后再数D个,再拉出来处决-- 直到剩下最后一个可以赦免. function getNum($n,$m){ //用于把所有的数存到数组初始化 $a = array(); //遍历,存入数组 for($i=1;$i<=$n;$i++){ $a[$i] = $i; } //指针归0 reset

纽约客:变态连环杀手正在被算法迅速围剿

作者:The New Yorker 来源:虎嗅 2017-12-04 11:31纽约客:变态连环杀手正在被算法迅速围剿 算法定义世界,算法改变世界.我们正生活在一个被大数据与算法改变的世界里.算法带来更精准的消费产品推介,更高效的金融风控,甚至,算法可以帮助识别电影里演绎的变态连环杀手,通过数据分析来判断案情中的各种概率.当然,距离预防案件发生还有很远的距离,数据不够丰富.罪犯大范围流窜等难题依然待解. 本文转载自公众号"机器之能",来源于 The New Yorker杂志,作者 Al

云博士智能决策能力介绍

云博士简介 云博士依托于海量数据分析.自然语义分析和云产品智能自学习等技术,面向用户提供了最懂云计算的智能问答服务,为阿里云用户提供秒级响应.多端触达的智能化服务体验. 业务背景 阿里云业务的快速发展,带来了云计算背后的巨大服务压力!如何为用户更快速高效把问题解决呢 ?我们在算法推荐上做了很多实验和突破,努力提升答案的命中概率,为用户的问题推送期望的知识点.后来我们逐渐发现:在用户使用云计算产品的过程中,很多时候只能看到问题现象,而经常有很多问题的现象是相同或者类似的,这时候即便我们推送答案的计

约瑟夫环问题求解算法C语言源代码

约瑟夫算法:n个人围成一圈,每人有一个各不相同的编号,选择一个人作为 起点,然后顺时针从1到k数数,每数到k的人退出圈子,圈子缩小,然后从下一 个人继续从1到k数数,重复上面过程.求最后推出圈子的那个人原来的编号. 思路:按照上面的算法让人退出圈子,直到有n-1个人推出圈子,然后得到最 后一个退出圈子的人的编号. 程序:坐成一圈的人的编号不需要按序排列 #define N 100 int yuesefu1(int data[],int sum,int k) { int i=0,j=0,count

常用算法:C#约瑟夫环问题

约瑟夫环问题,即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人再出列,如此循环,直到所有人都出列为止.最后按出列顺序输出.代码如下: //从第start人开始计数,以alter为单位循环记数出列,总人数为total public int[] Jose(int total, int start,int alter) { int j, k = 0; //count数组存储按出列顺序的数据,以当结果返回 int[] count = new int[

约瑟夫问题中的非常给力的算法.....

问题描述 现实现约瑟夫问题,循环链表来做事比较的常见的,但上网搜到几个非常好的算法,,但看不懂第二种方法,我照着网上的实现了一下,请各位大侠帮忙解释一下第二种算法的思路.importjava.util.Scanner;publicclassYuesefu{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);intn=scan.nextInt();intm=scan.nextInt();//第一种方法这是求最终的

一些C语言中字符串的算法问题解决实例小结_C 语言

    字符串问题是面试中经常出现的问题,这类问题有很多,难以不一.下面是几道字符串的题目,网上都能找到解答,自己实现了一下,供网友参考.感觉算法重要的是要有正确的思路,实现起来不是问题.自己一定要多思考,这样收获可能会更多一点.         问题1:找两个字符串的最长公共子串.         具体描述,如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串.注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中.请编写一个函数,输入两个字

搜索引擎核心算法:自然语言和布尔搜索

本人从事搜索引擎相关的工作已有十一年,今天与大家一起谈谈搜索引擎核心算法之:自然语言和布尔搜索.论述引出了如下结论:搜索爬虫和搜索引擎使用某种启发式方法给网页排名,并返回结果.爬虫观察模式,以确定某网页的内容,搜索引擎在搜索查询中查找模式,并与爬虫识别的模式进行比较,并返回结果. 这个理论的复杂性在于,我们使用的是活跃的.不断成长.不断演变的语言,这意味着语言的使用模式也在不断变化.为了跟上这种变化,搜索引擎也必须是活跃的.不断成长.不断演变的,所以在理解如何针对搜索引擎定位阿站时,启发式方法是

解析绿萝算法应对策略和处理方法

2013年伊始,百度又进行了算法的升级,2月19日发布绿萝算法,2月20日晚就进行了大规模的更新.从目前得到的数据来看,行业内一些导出链接过多.友情链接不相关的网站确实受到了一定的影响.由此,联创网络来探讨一下关于绿萝算法的应对策略和中伤后的处理方法. 百度本次调整是针对购买链接的站点进行惩罚,最后演变成了页面过多链接的惩罚.这里所说的,够买链接的站点和页面过多链接的惩罚有着不同的角度.购买链接的人,不一定会把所有购买的链接都指向首页,而是进行分散到各个带有流量词的页面.而百度惩罚的是某一个页面