黑马程序员——围圈报数的算法实现
2015-12-31 02:44
459 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
import java.util.ArrayList; import java.util.List; /* * 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。 * 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人? * 分析: * 用集合存储1-100这100个整数 * 从1开始一直数,直到第14个,把前13个数移除并放到集合末位,当到第14个数时把该数删除,则 * 第15个数就变成第一个数了,如此一直进行下去,直到集合中只剩下1个数。输出这个数即可。 */ public class Test9 { public static void main(String[] args) { // 定义集合 List<Integer> list = new ArrayList<Integer>(); // 初始化数据 for (int x = 1; x <= 100; x++) { list.add(x); } // 一直这样操作,直到集合中只有1个元素 while (list.size() > 1) { // 从1开始一直数,直到第14个,把前13个数移除并放到集合末位,当到第14个数时把该数删除 // 即把集合的第一个元素移到集合末位,循环13次,当第14次时删除该数。 for (int y = 0; y < 13; y++) { list.add(list.remove(0)); } // 移动13此以后,现在集合的第一个元素就是要删除的数 list.remove(0); } //此时剩下的数,就是要求的数 System.out.println("最后剩下的是100人中的第"+list.get(0)+"个人。"); } }
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析