A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

       今天玩了一个很有趣的游戏,叫做约瑟夫环。大家都听说过“约瑟夫环”吧:话说从前,有位国王,特别残暴。有天呢,他闲的蛋疼,想把关在监狱里的囚犯都弄出来玩个有趣的游戏——把每个囚犯编个号,凡是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);
        }
}

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马