用单向循环链表实现约瑟夫环问题(约瑟夫环数据结构循环单链表)

本文主要介绍用单向循环链表实现约瑟夫环问题(约瑟夫环数据结构循环单链表),下面一起看看用单向循环链表实现约瑟夫环问题(约瑟夫环数据结构循环单链表)相关资讯。
本文通过一个例子来说明如何在php中基于单向链表解决约瑟夫环问题。分享给你,供你参考,如下:
约瑟夫环问题:罗马人占领乔塔帕特后,39名犹太人与约瑟夫斯和他的朋友一起躲在一个山洞里,39名犹太人决定宁死也不被敌人抓住,于是决定了模式。四十一个人排成一圈,第一个人开始报数。他们每数到第三个人就要,然后下一个人再报数,直到所有人都。然而,约瑟夫斯和他的朋友们不想遵从。从一个人开始,穿越k-2个人(因为第一个人已经被穿越了),杀死第k个人。然后,过k-1人,杀k人。这个过程沿着圆圈继续,直到只剩下一个人,这个人还能继续活下去。问题是,给定金额,我应该首先站在哪里以避免被执行死刑?约瑟夫斯要求他的朋友先假装服从。他把他的朋友和他自己放在16号和31号位置,所以他逃过了死亡的游戏。
比较相似的问题有:n个人组成一个圈,编号为1,2,...,n依次。现在,从1号开始依次报数。向m汇报时,向m汇报的人退出,下一个人从1重新汇报,以此类推。什么是最后一个人 s号?
代码实现:
?phpclass node { public $ value//节点值public $ nextnode//next node}函数create ($ node,$ value){ $ node-value = $ value;}function addnode($node,$ value){ $ lastnode = find lastnode($ node);$ next node = new node;$ next node-value = $ value;$ lastnode-next node = $ next node;}/*查找最后一个节点*/函数find lastnode($ node){ if(empty($ node-next node)){ return $ node;} else { return findlastnode($ node-next node);}}/*删除节点必须有头作为引用值*/函数删除节点($ head,$ node,$ k = 1) {if ($ k 1 = $ m)){ if($ node-next node = = $ head){ $ node-next node = $ node-next node-next node;$ head = $ node-next node;返回$ node-next node;} else { $ node-next node = $ node-next node-next node;返回$ node-next node;} }else{ return deletenode($head,$node-nextnode,$m,$ k);}}/*节点数*/函数计数node ($ head,$ node,$ count = 1){ if($ node-next node = = $ head){ return $ count;}else{ return countnode($head,$node-nextnode,$ count);} }函数printnode($head,$node){ echo $node-value。 ;if($node-nextnode == $head)返回;printnode($head,$ node-next node);}函数显示($ data){ echo ;预科和高中。;;print _ r($ data);回声报。;/pre ;;} $ head = new node;create($head,1);addnode($head,2);addnode($head,3);addnode($head,4);addnode($head,5);addnode($head,6);addnode($head,7);addnode($head,8);addnode($head,9);addnode($head,10);addnode($head,11);addnode($head,12);$ lastnode = find lastnode($ head);$ lastnode-next node = $ head;$count = countnode($head,$ head);$ tmphead = $ headwhile($ count 2){ $ tmp head = delete node($ head,$tmphead,3,1);$count = countnod《php数据结构与算法教程》、《php基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》和《php程序设计算法总结》。
希望这篇文章对你设计php程序有所帮助。
标签:
个人节点问题朋友
了解更多用单向循环链表实现约瑟夫环问题(约瑟夫环数据结构循环单链表)相关内容请关注本站点。