约瑟夫问题
来源:互联网 发布:绿岸网络 编辑:程序博客网 时间:2024/06/04 22:51
约瑟夫问题:N 个人围成一圈,从第 i 个开始报数,第 M 个将被杀掉,最后剩下一个,其余人都将被杀掉。例如i=1,N=5,M=4,被杀掉的人的序号为4 , 3 ,5 , 2。最后剩下1号。
PHP 实现:
<?php /** * 创建链表结构(类代替) * @param no */class Node{public $no;public $next;public function __construct($no){$this->no=$no;}}/** * 创建(循环)链表 */Class cycleLink{public $first;//初始头结点public function __construct(){$this->first=new Node(1);//创建头结点}public function createLink($N){$cur=$this->first;for ($i=2;$i<=$N;$i++){$new=new Node($i);$cur->next=$new;$cur=$new;}$cur->next=$this->first;//合并环路}function showLink(){$cur=$this->first;while($cur->next!=$this->first){echo "LinkNo:".$cur->no."<br>";$cur=$cur->next;}echo "LinkNo:".$cur->no."<br>";//显示末尾的一个}function CycleDel($M,$offSet){if ($M<=1) exit("M 需要大于1");//按照偏移量将头结点往后移动for($i=1;$i<$offSet;$i++){$this->first=$this->first->next;//向后移动}$cur=$this->first;//游标指向头指针while($cur->next!=$cur){for($i=1;$i<$M-1;$i++){$cur=$cur->next;}echo "删除节点".$cur->next->no."<br>";$cur->next=$cur->next->next;//删除节点$cur=$cur->next;//echo $cul->no."**";}echo "最后剩下的是:".$cur->no;}}$N=50;//总人数$M=4;//一次数多少个$offSet=1;//从第几个开始$Link=new cycleLink;$Link->createLink($N);$Link->showLink();$Link->CycleDel($M,$offSet)//showLink($first);?>
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- c语言编辑时候有哪些小技巧呢?
- 黑马程序员 银行业务调度系统
- JSP的复习总结
- mysql 将一个字符串按某个字符串出现的最后一次位置来拆分成两个字符串
- 菜鸟之旅——Java入门篇(七)异常处理
- 约瑟夫问题
- 黑马程序员—高新之javaBean总结
- 数据库统计学生成绩
- [HR面试] 65个最常见的面试问题与技巧性答复
- SELENIUM 处理WINDOWS 上传 窗口
- objective-C中实现四则元算——支持+、-、*、/、sin、cos、tan、log等运算
- 什么是 Web 框架?
- APK反编译后代码分析(一)
- Selenium 处理安全对话框 (windows security dialog)用autoit 来代替