黑马程序员技术交流社区

标题: 约瑟夫环——教你怎样玩杀人游戏! [打印本页]

作者: Demo_黑马    时间: 2016-5-23 00:31
标题: 约瑟夫环——教你怎样玩杀人游戏!
       今天玩了一个很有趣的游戏,叫做约瑟夫环。大家都听说过“约瑟夫环”吧:话说从前,有位国王,特别残暴。有天呢,他闲的蛋疼,想把关在监狱里的囚犯都弄出来玩个有趣的游戏——把每个囚犯编个号,凡是3的倍数的囚犯,全部拖出去砍了!然后剩下的再从头开始,从一数起,凡是数到3的倍数,同样也给杀了。。。(真心杀人杀到手软)以此类推,最后只剩下一个人,那么这个人就是幸运的,无罪释放!
      用java语言实现上述的过程,最后留下一个幸运的数字!
      源代码如下:(亮点在注释!)
package com.heima.test;
import java.util.ArrayList;
public class Test7 {
        /**
          * 约瑟夫环(杀人游戏)
          * 幸运数字
         */
        public static void main(String[] args) {
                System.out.println(getLuckyNum(899));
        }
        public static int getLuckyNum(int num) {
                //创建集合对象
                ArrayList<Integer> list = new ArrayList<>();
                //添加人头
                for (int i = 1; i <= num; i++) {
                        list.add(i);
                }
                //添加计数器
                int count = 1;
                //开始杀人
                for (int i = 0; list.size() != 1; i++) {
                        //到达末尾,就从头开始循环再杀
                        if (i == list.size()) {
                                i = 0;
                        }
                        //凡是3的倍数就拖出去斩了
                        if (count % 3 == 0) {
                                list.remove(i--);
                        }
                        //计数
                        count++;
                }
                //只剩下一个幸运的人
                return list.get(0);
        }
}

是不是很有意思呢?用代码实现一些有趣的小游戏,想怎么死就怎么死。只要代码掌握在你手上,想长生不老都可以!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2