PHP基于递归实现的约瑟夫环算法示例

2025-05-29 0 93

本文实例讲述了PHP基于递归实现的约瑟夫环算法。分享给大家供大家参考,具体如下:

约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

?

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
<?php

$num = 41;

$step = 3;

function joseph($arr, $step, $start, $survivors)

{

foreach($arr as $k => $v)

{

if($start % $step === 0)

{

unset($arr[$k]);

$start = 1;

}

else

{

$start ++;

}

}

if(count($arr) > $survivors)

return joseph($arr, $step, $start, $survivors);

else

return $arr;

}

$i = 0;

$arr = [];

while($i ++ < $num){

$arr[] = $i;

}

$arr = joseph($arr, 3, 1, 2);

print_r($arr);

执行结果:

?

1

2

3

4

5
Array

(

[15] => 16

[30] => 31

)

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

原文链接:http://blog.csdn.net/alian_c/article/details/53324416

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP基于递归实现的约瑟夫环算法示例 https://www.kuaiidc.com/93813.html

相关文章

发表评论
暂无评论