使用LinkedList实现约瑟夫环
来源:互联网 发布:c#sql select 的返回值 编辑:程序博客网 时间:2024/06/11 01:25
问题描述:20只猴子围成一圈,从1开始报数,报到第14的那只猴子退出圈外,并重新开始计数,直到圈中只剩下一只猴子,就是大王。
代码如下:
import java.util.Iterator;import java.util.LinkedList;/** * @author huamanxi * 用LinkedList实现约瑟夫环 */public class DemoLinkedList{public static void main(String[] args) {//创建一个元素类型为Integer类型的链表LinkedList<Integer> monkeys=new LinkedList<>();int number,cnt;//将猴子的编号依次放到链表中for(number=1;number<=20;number++){monkeys.addLast(number);}//用于控制循环,当cnt为1时,退出循环cnt=20;//用于计数,当数到14时,删除对应的猴子number=0;Iterator it=monkeys.iterator();//当剩下的猴子的个数大于1时,一直让猴子出圈Integer num = null;while(cnt>1){if(it.hasNext()){num=(Integer)it.next();number++;}else{//迭代器已到达末尾,重新将它置回到链表头部it=monkeys.iterator();}//删除应该退出圈外的猴子if(number==14){//从要删除的这个猴子的下一个开始重新计数number=0;System.out.println("编号为"+num+"的猴子出圈");it.remove();cnt--;}}//最后剩下的就是大王System.out.println("大王的编号为:"+monkeys.element());}}
运行结果:
删除编号为14的猴子
删除编号为8的猴子
删除编号为3的猴子
删除编号为19的猴子
删除编号为16的猴子
删除编号为13的猴子
删除编号为12的猴子
删除编号为15的猴子
删除编号为18的猴子
删除编号为2的猴子
删除编号为7的猴子
删除编号为20的猴子
删除编号为10的猴子
删除编号为9的猴子
删除编号为17的猴子
删除编号为6的猴子
删除编号为1的猴子
删除编号为5的猴子
删除编号为4的猴子
大王的编号为:11
阅读全文
0 0
- 使用LinkedList实现约瑟夫环
- 使用单链表求解约瑟夫环问题 (利用java中的LinkedList)
- 【约瑟夫】编程实现约瑟夫环
- 使用LinkedList实现Queue
- 使用LinkedList实现队列
- Java 使用链表实现约瑟夫环
- 使用环形链表实现约瑟夫环
- 使用循环链表实现约瑟夫环
- 使用LinkedList实现安全队列
- 约瑟夫环(VC++实现)
- java实现约瑟夫环
- 数组实现约瑟夫环
- 约瑟夫环 php实现
- 约瑟夫环数组实现
- java实现约瑟夫环
- 约瑟夫环 PHP实现
- 约瑟夫环的实现
- java 实现约瑟夫环
- C++读取带空格字符串
- liunx contens7 下多站点配置
- js创建对象的方式
- Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView
- 计算广告学习笔记2.1 合约广告系统-常见广告系统开源工具
- 使用LinkedList实现约瑟夫环
- iPhone 6 / 6 Plus 出现后,如何改进工作流以实现一份设计稿支持多个尺寸?
- 发送码率控制之PacedSender模块
- Android开发之更优雅的使用Loading
- UE4调用摄像头
- Linux:dup/dup2 文件描述符重定向函数(有图有代码有真相!!!)
- 从零到一:用Phaser.js写意地开发小游戏(Chapter 1
- iFunFactory
- 【HTML5学习笔记】13:表单元素 其三