php对称算法示例(php解决约瑟夫环算法实例分析)
类别:编程学习 浏览量:1109
时间:2021-10-19 06:27:05 php对称算法示例
php解决约瑟夫环算法实例分析本文实例讲述了php解决约瑟夫环算法。分享给大家供大家参考,具体如下:
今天偶遇一道算法题
“约瑟夫环”是一个数学的应用问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
方法一:递归算法
|
function killMonkey( $monkeys , $m , $current = 0){ $number = count ( $monkeys ); $num = 1; if ( count ( $monkeys ) == 1){ echo $monkeys [0]. "成为猴王了" ; return ; } else { while ( $num ++ < $m ){ $current ++ ; $current = $current % $number ; } echo $monkeys [ $current ]. "的猴子被踢掉了<br/>" ; array_splice ( $monkeys , $current , 1); killMonkey( $monkeys , $m , $current ); } } $monkeys = array (1 , 2 , 3 , 4 , 5 , 6 , 7, 8 , 9 , 10); //monkeys的编号 $m = 3; //数到第几只猴子被踢出 killMonkey( $monkeys , $m ); |
运行结果:
3的猴子被踢掉了
6的猴子被踢掉了
9的猴子被踢掉了
2的猴子被踢掉了
7的猴子被踢掉了
1的猴子被踢掉了
8的猴子被踢掉了
5的猴子被踢掉了
10的猴子被踢掉了
4成为猴王了
方法二:线性表应用
最后这个算法最牛,
哦,是这样的,每个猴子出列后,剩下的猴子又组成了另一个子问题。只是他们的编号变化了。第一个出列的猴子肯定是a[1]=m(mod)n(m/n的余数),他除去后剩下的猴子是a[1]+1,a[1]+2,…,n,1,2,…a[1]-2,a[1]-1,对应的新编号是1,2,3…n-1。设此时某个猴子的新编号是i,他原来的编号就是(i+a[1])%n。于是,这便形成了一个递归问题。假如知道了这个子问题(n-1个猴子)的解是x,那么原问题(n个猴子)的解便是:(x+m%n)%n=(x+m)%n。问题的起始条件:如果n=1,那么结果就是1。
|
function yuesefu( $n , $m ) { $r =0; for ( $i =2; $i <= $n ; $i ++) { $r =( $r + $m )% $i ; } return $r +1; } echo yuesefu(10,3). "是猴王" ; |
运行结果:
4是猴王
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/weixin_36851500/article/details/83515632
您可能感兴趣
- phpfpm优化方法(php-fpm超时时间设置request_terminate_timeout资源问题分析)
- phpredis高级用法(PHP Redis扩展无法加载的问题解决方法)
- phpredis存储对象(PHP使用redis位图bitMap 实现签到功能)
- php技术优点和缺点(php的优点总结 php有哪些优点)
- php中钩子的理解与实例教程(php中钩子hook的原理与简单应用demo示例)
- php漏洞处理方法(php解决安全问题的方法实例)
- thinkphp 多维度展示数据(Thinkphp自定义生成缩略图尺寸的方法)
- dedecms标签调用原理(DEDECMS安全设置 执行php脚本限制设置方法apache+nginx)
- php语法基础知识(PHP中16个高危函数整理)
- php网页生成程序(php生成静态页面并实现预览功能)
- php安全性问题怎么解决(实例分析10个PHP常见安全问题)
- php网页浏览功能的具体实现(php实现网页上一页下一页翻页过程详解)
- 常见的php五大运行模式详解(php设计模式之职责链模式定义与用法经典示例)
- php开发pdo事务处理(Cpanel下Cron Jobs定时执行PHP的方法)
- php项目开发实例(php项目中类的自动加载实例讲解)
- php目录函数创建教程(PHP下载文件函数与用法示例)
- 新疆80后在淘宝卖干果 以前是 不务正业 如今帮乡亲致富(新疆80后在淘宝卖干果)
- 弄清楚了销 售 买 卖这四个字,母婴生意做起来就没那么难了(弄清楚了销售买)
- 数读 买首饰金是 投资黄金 吗 买金容易卖金难(数读买首饰金是)
- 销 售 买 卖 你真的了解这四个字了吗(销售买)
- 谢娜是得罪快乐大本营造型师了吗 全场被黑化(谢娜是得罪快乐大本营造型师了吗)
- 前《iLOOK》时装总监 《快乐大本营》御用造型师上线(快乐大本营御用造型师上线)
热门推荐
- vue如何获取元素(vue第一次获取不到元素的解决方法记录)
- elasticsearch 索引创建过程(使用elasticsearch定时删除索引数据)
- linux系统各种执行命令(Linux调整命令历史方法详解)
- js定时器几分钟执行(利用JS定时器实现元素移动)
- 循环查询sql server(SQL Server 树形表非循环递归查询的实例详解)
- 使用vue独立开发组件(vue单文件组件的实现)
- aws提供了哪些云服务(AWS与阿里云服务器在国内使用的简单对比评测)
- linux内核从原理到代码详解(探究一个LED如何入门Linux内核)
- python与php比较(浅谈php调用python文件)
- asp.net将ppt文档转换成pdf
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9