php基于环形链表解决约瑟夫环问题示例

2025-05-27 0 22

本文实例讲述了php基于环形链表解决约瑟夫环问题。分享给大家供大家参考,具体如下:

先来重温一下约瑟夫环问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。

前面介绍了关联数组解决约瑟夫环的方法,环形链表解决约瑟夫环的方法如下:

?

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

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55
<?php

header("content-type:text/html;charset=utf-8");

class Child{

public $no;

public $next=null;

public function __construct($no){

$this->no=$no;

}

}

function addChild($n,&$first){ //$n是人的个数,创建环形链表

for($i=0;$i<$n;$i++){

$child=new Child($i+1);

if($i==0){

$first=$child;

$cur=$child;

$cur->next=$cur;

}else{

$cur->next=$child;

$child->next=$first;

$cur=$cur->next;

}

}

}

function showHero($first){

$cur=$first;

while($cur->next!=$first){

echo "<br/>人的编号:".$cur->no;

$cur=$cur->next;

}

echo "<br/>人的编号:".$cur->no;

}

function countChild($first,$m,$k){

$cur=$first;

for($i=0;$i<$m-1;$i++){

$cur=$cur->next;

}

$j=0;

while($cur!=$cur->next){

if($j==$k-2){

echo "<br/>出列编号:".$cur->next->no;

$cur->next=$cur->next->next;

$cur=$cur->next;

$j=0;

}else{

$cur=$cur->next;

$j++;

}

}

echo "<br/>最后出列编号:".$cur->no;

}

addChild(10,$first);

showHero($first);

echo "<hr/>";

countChild($first,2,3); //第二个人开始数,数到三出列

?>

运行结果:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
人的编号:1

人的编号:2

人的编号:3

人的编号:4

人的编号:5

人的编号:6

人的编号:7

人的编号:8

人的编号:9

人的编号:10

--------------------------------------------------------------------------------

出列编号:4

出列编号:7

出列编号:10

出列编号:3

出列编号:8

出列编号:2

出列编号:9

出列编号:6

出列编号:1

最后出列编号:5

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

原文链接:http://www.oschina.net/code/snippet_723831_15617

收藏 (0) 打赏

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

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

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

快网idc优惠网 建站教程 php基于环形链表解决约瑟夫环问题示例 https://www.kuaiidc.com/71652.html

相关文章

发表评论
暂无评论