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

yipeiwu_com6年前PHP代码库

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

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

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程序设计有所帮助。

相关文章

Zend framework处理一个http请求的流程分析

Zend framework处理一个http请求的流程分析

  1, 首先是bootstrap过程,初始化程序里用到的资源 2, 创建一个Zend_Controller_Front实体,实现front controller模式,这个实...

php获取四位字母和数字的随机数的实现方法

那么我们知道在php中简单的四位数的纯数字验证可以用rand(1000,9999)就可以了,但如果我们要得到字母和数字的随机四位数,那我们该如何写函数呢?下面胡鹏博客在php资料栏目下给...

PHP文件操作详解

本文实例为大家分享了PHP文件操作的具体代码,供大家参考,具体内容如下 (1)文件读取 file_get_contents( ) 实例: <?php // 文件部分...

深入php数据采集的详解

这里介绍两个php采集能用到的好工具。一个是Snoopy,一个是simple_html_dom。采集还有很多方式(其实本质就2-3种,其他的都是衍生的),php自带了几个方法也能直接进行...

优化WordPress中文章与评论的时间显示

很多博客都喜欢用 评论发表于 “XXX 分钟 之前”、文章发表于 “XXX 分钟 之前”来显示文章评论的时间,改善的时间显示方式不仅能很直观的告诉读者这篇文章或评论发表距今已有多长时间,...