java实现约瑟夫环
2016-12-18 15:20
176 查看
import java.util.ArrayList; /** * * 约瑟夫环问题: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数 * 数到m的那个人又出列;依此规律重复下去,直到剩下最后一个人. * */ public class JosephTest { public static void main(String[] args) { System.out.println(getJoseph(5, 4, 3)); //自定义总人数,出列报数数,开始人编号 } //定义获取方法getJoseph,参数n,m,k分别对应玩游戏的总人数,出列报数数和开始报数的人的编号 public static Integer getJoseph(int n, int m, int k) { ArrayList<Integer> arr = new ArrayList<Integer>(); //定义一个集合arr用于装未出列的人 for (int i = 1; i <= n; i++) { arr.add(i); //先把所有人编号 } int start = k - 1; for (int i = start; arr.size() != 1; i++) { //由编号为k的人开始,从1开始报数 if (i == arr.size()) { //报数完最后一人后指针跳到第一个人 i = 0; start = -(arr.size() - start); //报数每过一轮折算已报数 } if ((i - start + 1) == m) { //确定报数为m的人 arr.remove(i); //将其移除集合(出列) start = i--; //有人退出后,该指针处的人将会成为第一个报数的人 } } return arr.get(0); } }
相关文章推荐
- 约瑟夫环的java实现
- Java循环链表实现约瑟夫环
- 约瑟夫环(丢手帕游戏)Java 链表实现(程序正确无误)
- java单向循环链表实现约瑟夫环
- 约瑟夫环--java实现
- [原创]java实现约瑟夫环问题
- java循环单链表实现约瑟夫环问题
- java 实现约瑟夫环
- 用Java实现约瑟夫环
- 约瑟夫环的java实现
- java实现约瑟夫环
- Java实现约瑟夫环应用问题(精品)
- java实现简单的约瑟夫环问题(二)
- java 实现约瑟夫环的实例代码
- 用java实现链表并解决约瑟夫环问题
- 小算法:约瑟夫环的Java实现
- java实现简单的约瑟夫环问题
- Java 使用链表实现约瑟夫环
- java实现约瑟夫环问题
- 约瑟夫环 java实现