出圈算法
2014-05-08 16:06
218 查看
题目:有 people 个人站成一个圈,第一个人开始数数(从1开始),每数到 num 或者 num 的倍数此人就退出。最后剩下的人是多少号?
网上看了看,应该有很多种实现方法,在此摘录下来。
实现方式一
实现方式二(据说这个事神算法)
如果你不明白神算法,请戳这里: http://bbs.csdn.net/topics/20103004 注意看评论部分。
实现方式三代码相对较长,不粘贴了,戳这里吧:/article/10493663.html
PS:如此简单的一个算法,看的我头都大了。。。
网上看了看,应该有很多种实现方法,在此摘录下来。
实现方式一
private static int cycle(int people, int num) { List<Integer> dataList = new LinkedList<Integer>(); for (int i = 0; i < people; i++) { dataList.add(new Integer(i + 1)); } int index = -1; while (dataList.size() > 1) { index = (index + num) % dataList.size(); dataList.remove(index); index--; } return dataList.get(0).intValue(); }
实现方式二(据说这个事神算法)
static int cycle(int people, int num) { int i, r = 0; for (i = 2; i <= people; i++) { r = (r + num) % i; } return r + 1; }
如果你不明白神算法,请戳这里: http://bbs.csdn.net/topics/20103004 注意看评论部分。
实现方式三代码相对较长,不粘贴了,戳这里吧:/article/10493663.html
PS:如此简单的一个算法,看的我头都大了。。。
相关文章推荐
- Eclipse 中快捷键 ctrl+alt+上箭头 冲突
- c# webbrowser 清除当前网站 cookie
- 定制Ubuntu Live CD
- Linux命令:rm 命令
- 在Java上实现RESTful Web Services
- 二级指针的疑惑
- 传感器和骁龙SDK:抢先发布产品
- 【暴力+排除法】FZU 2148 Moon Game
- POJ_3264_Interval Tree 最大最小值之差
- rsync 同步
- Palindrome Number
- JAVA垃圾收集机制剖析
- C语言基本数据类型及转换规则
- GeoHash原理解析
- 织梦修改数据库密码
- POJ_3264_Interval Tree 最大最小值之差
- httpd的警告
- Thinkphp html:list
- Windows下开发Android-NDK的完整步聚简介
- struts2中的标签iterator使用