黑马程序员技术交流社区
标题:
约瑟夫环
[打印本页]
作者:
BackGaoz
时间:
2016-4-23 21:36
标题:
约瑟夫环
也叫杀人游戏,就是一共有N个人,从第一个开始进行报数,只要数到3或者3的倍数,就把这个人干掉,也就是删除,一直数到最后一个人,然后接着从第一个人开始数,最后活着的只要一个人就可以。然后看看这个人是多少号、
package com.heima.test;
import java.util.ArrayList;
public class Test8 {
public static void main(String[] args) {
System.out.println(getLucklyNum(8));
}
/*
* 获取幸运数字
* 1,返回值类型int
* 2,参数列表int num
*/
public static int getLucklyNum(int num) {
ArrayList<Integer> list = new ArrayList<>(); //创建集合存储1到num的对象
for(int i = 1; i <= num; i++) {
list.add(i); //将1到num存储在集合中
}
int count = 1; //用来数数的,只要是3的倍数就杀人
for(int i = 0; list.size() != 1; i++) { //只要集合中人数超过1,就要不断的杀
if(i == list.size()) { //如果i增长到集合最大的索引+1时
i = 0; //重新归零
}
if(count % 3 == 0) { //如果是3的倍数
list.remove(i--); //就杀人
}
count++;
}
return list.get(0);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2