【剑指offer】之约瑟夫环问题
2015-12-03 08:42
267 查看
题目描述:
每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续1...m报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到JOBDU名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?
分析:
举例:五个数0、1、2、3、4,每数3个数删除一个,得到的结果是3.
java代码实现;(调试了一下午,终于调出来了)
题目描述:
每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续1...m报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到JOBDU名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?
分析:
举例:五个数0、1、2、3、4,每数3个数删除一个,得到的结果是3.
java代码实现;(调试了一下午,终于调出来了)
private static int JoseProblem(int n, int m) { int size = n; class Node { private int data ; private Node next ; Node(int data, Node next) { this.data = data; this.next = next ; } } Node header = null; Node tail = null; for(int i=0;i<n;i++) { Node newNode = new Node(i, null); if(i==0) { header = tail = newNode ; } else { tail.next = newNode ; tail = newNode ; } } Node p = header ; while(size > 1) { for(int i=1;i<m-1;i++) { if(p.next == null) { p = header; } else { p = p.next; } } // Node q ; if(p == tail) { header = header.next ; p = header ; }else { if(p.next.next == null) { p.next = null; tail = p; p = header; } else { p.next = p.next.next; p = p.next; } } size--; } return p.data; }
相关文章推荐
- 倒计时60秒方可再次点击发送的Js代码
- jQuery.Validate常用的一些规则
- javascript学习小结之prototype
- jQuery.Validate常用的一些规则
- jQuery1.4.2中关于:not(:first)一个问题
- jQuery中的mouseenter和mouseleave事件
- cgi创建web应用(一)之传递表单数据与返回html
- JavaScript使用DeviceOne开发实战(五)仿ZAKER应用
- Zookeeper管理工具node-zk-browser
- 学学JavaScript的闭包特性
- WebSocket中关于使用ProtoBuf传输数据介绍js部分
- JavaScript数字精度丢失问题总结
- 浅析JavaScript中两种类型的全局对象/函数
- immutablejs
- html css 内部有浮动元素的div的高度没有被撑开怎么办【转载】
- StrobeMediaPlayback的Javascript桥接
- JavaScript中null和undefined的区别
- How do I get started with Node.js
- POJ 1013 Counterfeit Dollar
- JavaScript设计模式 - 代理模式