算法,约瑟夫问题
算法 约瑟夫 问题
2023-09-27 14:24:29 时间
<?php
/**
* 跟猴子问题比较相似,最后一个是大王。约瑟夫是最后两个是存活。
* 约瑟夫问题是个有名的问题:
* N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。
* 例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。
*/
function getLastTwo() {
$people = 41;
$killNum = 3;
// 初始化数据
$people_arr = range(1,$people);
for ($i = 1 ; $i <= $killNum * ($people -2);$i++) {
$speak_num = array_shift($people_arr);
if ($i % $killNum == 0) {
echo "死了".$speak_num."<br/>";
} else {
// 放到后面
array_push($people_arr,$speak_num);
}
}
// 输出活着的人
foreach($people_arr as $alive) {
echo "我".$alive."还活着!<br/>";
}
}
getLastTwo();
结果:
死了3
死了6
死了9
死了12
死了15
死了18
死了21
死了24
死了27
死了30
死了33
死了36
死了39
死了1
死了5
死了10
死了14
死了19
死了23
死了28
死了32
死了37
死了41
死了7
死了13
死了20
死了26
死了34
死了40
死了8
死了17
死了29
死了38
死了11
死了25
死了2
死了22
死了4
死了35
我16还活着!
我31还活着!
相关文章
- java基础---->数字签名算法的介绍
- 【计算机视觉】Objectness算法(一)---总体理解,整理及总结
- 目标检测器算法:YOLO【轻量级、高精度】【业界实用】
- A.特定领域知识图谱知识推理方案:知识图谱推理算法综述[一](基于距离的翻译模型:TransE、TransH、TransR、TransH、TransA、RotatE)
- 最全排序算法原理解析、java代码实现以及总结归纳
- 回溯算法解迷宫问题(java版)
- 基于麻雀算法ssa的测试函数Eggholder优化,测试函数的100求解方法之11
- 【算法题】约瑟夫问题
- 如何选择合适的机器学习算法?
- 推荐算法介绍
- 赛码网算法: 上台阶 ( python3实现 、c实现)
- 分布式ID生成方式(雪花算法)
- 剑指Offer第二版:查找算法(简单)
- 【算法016】买卖股票的最佳时机(121)