数据结构(二)java解决约瑟夫环的两种方法
来源:互联网 发布:岁月如歌歌词含义 知乎 编辑:程序博客网 时间:2024/05/28 15:04
选择不同的数据结构,对于解决问题使用的算法也会存在很大的不同,举例分别使用组数和队列来解决约瑟夫环问题。
使用数组数据结构
/** * 数组解决约瑟夫环问题 * @param personNumber 人数 * @param number 数的数 */public static void count(int personNumber,int number){ //1.把人放到数组中,数据结构 int[] persons = new int[personNumber]; for (int i = 0; i < personNumber; i++) { persons[i] = i+1; } //2.算法 int index = 0;//从0开始 int dunNumbers = 0;//记录蹲下人数的数 int duns = 0;//记录蹲下人的个数 while (duns !=personNumber ) { //有人没有蹲下 //1.判读当前位置是否是蹲下 if (persons[index%persons.length] == 0) { //蹲下,继续数数 dunNumbers++; index++; }else { //2.没有蹲下,判读数的数是否是number的数 if ((index + 1 -dunNumbers)%number == 0) { //是 //打印该位置 System.out.println(persons[index%persons.length]); //用0标识蹲下 persons[index%persons.length] = 0; //蹲下的人数++ duns++; //继续数数 index++; }else { //否 //继续数数 index++; } } }}
使用队列数据结构
/** * 队列解决约瑟夫环问题 * @param personNumber 人数 * @param number 数的数 */public static void countQueue(int personNumber,int number){ //1.把人放到队列中 Queue<Integer> persons = new LinkedList<Integer>(); for (int i = 0; i < personNumber; i++) { persons.add(i+1); } //2.算法 int counts = 0;//计数器 while (!persons.isEmpty()) { //1.出队列 Integer person = persons.poll(); //2.计数器++ counts++; //3.判断 if (counts % number == 0) { //是,打印 System.out.println(person); } else { //不是,继续入队列 persons.add(person); } }}
0 0
- 数据结构(二)java解决约瑟夫环的两种方法
- 约瑟夫环-两种实现方法,两种时间复杂度
- 用PHP解决“约瑟夫环”的几种方法
- 约瑟夫环的两种实现
- 约瑟夫环的两种解法
- 约瑟夫环的两种实现
- 约瑟夫环问题的两种解决方式(递归求解和数组模拟求解)
- 约瑟夫环的解决
- 约瑟夫环的解决
- 两种方法实现约瑟夫环(链表,顺序表)
- 学习笔记之约瑟夫环的两种实现方法(数组&链表)
- 约瑟夫环java实现的方法
- 数据结构 实验二:解决约瑟夫问题(待补充)
- 求解约瑟夫问题两种方法
- 约瑟夫环的2种解决
- 约瑟夫问题 之Java两种解决方案
- 约瑟夫环:用java解决的一种办法
- 循环列表的Java实现,解决约瑟夫环问题
- POJ 1979 基础搜索 DFS\BFS 一
- dubbo 问题整理
- OWASP 安全编码规范
- LSTM
- redis源码学习之压缩列表
- 数据结构(二)java解决约瑟夫环的两种方法
- 浏览器滚动条滚动到固定位置效果
- 《机器学习》——读书笔记2
- 令人振奋的Class(上)
- 保存服务器的运行状态
- linux debian下安装中国农历
- 最短路径(Floyd、Dijstra、BellmanFord)
- 知乎标签详情页爬虫
- [HDU 1698]Just a Hook(线段树)