≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

php 解决约瑟夫问题解析

人气:716 时间:2018-09-22

这篇文章主要为大家详细介绍了php 解决约瑟夫问题解析,具有一定的参考价值,可以用来参考一下。

对php解决 约瑟夫问题感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
php解决 约瑟夫问题
问题描述:有n人围成一圈,从任意一个人开始,依次报数,数到m时,
第m个人出界(即出圈),出界的下一个人继续从1开始报数 ,数到m时,
第m个同样出界,依次类推

/**
 * php解决 约瑟夫问题
 *
 * @param 
 * @arrange 512-笔记网: www.q1010.com
 **/
header("content-type:text/html;charset=utf-8");
set_time_limit(0);
/**
* 约瑟夫问题
*
* 又称丢手帕问题
* 问题描述:有n人围成一圈,从任意一个人开始,依次报数,数到m时,
* 第m个人出界(即出圈),出界的下一个人继续从1开始报数 ,数到m时,
* 第m个同样出界,依次类推
*
* 问:每个人出界顺序及最后一个人出界的顺序
* */
/**
* 构造数组
*
* @param int $n 数组元素个数
* @return array
* */
$arr=array();//n个人用一个元素个数为n的数组来表示
function initarray($n){
	global $arr;
	for($i=1;$i<=$n;$i++){
		$arr[$i]=array(0);
	}
}
/**
* 找出每个人出界的顺序
*
* @param int $n 数组的元素个数
* @param int $m 报数的上限
* @param int $p 从第$p个人(原始围成圈的顺序)开始报数
* @param int $k 第$k次出界
* @return void
* */
function joseph($n,$m,$p,$k){
	global $arr;
	if($n <= 1){
		echo "人数不能少于2";
	}
	for($j=1;$j<=$m;$j++){
		if($p>$n){
			$p=1;
		}
		if($arr[$p][0] != 0){
			$j--;
		}
		$p++;
	}
	$arr[$p-1][0]=$k;
	$y=0;//已经出界的人的计数器
	foreach($arr as $value){
		if($value[0] != 0){
			$y++;
		}
	}
	if($y < $n){
		joseph($n,$m,$p,++$k);
	}
}
initarray(41);
echo joseph(41,3,1,1);
foreach($arr as $k=>$value){
	if($value[0] == count($arr)){
		$last=$k;
	}
	echo "第<font color='red'><span style='width:15px'>$k</font></span>人将会是第<font color='blue'><span style='width:15px'>".$value[0]."</span></font>次出界<br/>";
}
echo "最后出界的人是第".$last."人";

/***   来自四海网(www.q1010.com)   ***/

本文来自:http://www.q1010.com/173/832-0.html

注:关于php 解决约瑟夫问题解析的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:约瑟夫

您可能感兴趣的文章

  • php 解决约瑟夫问题实现方法
  • php 解决约瑟夫问题-关于处死犯人的算法
上一篇:php 将mysql数据转换到excel输出的简单示例
下一篇:php 数据类型校验函数的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。