黑马程序员技术交流社区

标题: 50个人围成一圈数数,数到3的人退出,求最后剩下的人 [打印本页]

作者: caolufo    时间: 2016-8-3 14:57
标题: 50个人围成一圈数数,数到3的人退出,求最后剩下的人
本帖最后由 caolufo 于 2016-8-3 15:33 编辑

Java实现约瑟夫环:50个人围成一圈数数,数到3的人退出,求最后剩下的人的编号.终于改成通用版的(借用Boolean变量标识):
[Java] 纯文本查看 复制代码

public class Test9 {

        public static void main(String[] args) {
                baoshu(50,3);
                baoshu(100,14);
        }
      /**             * 报数方法
       * @param n 总人数
       * @param m 报到数m的人出列
       */
        public static void baoshu(int n, int m) {
                //定义数组变量标识某人是否还在圈内,初始值为true
                boolean[] flags=new boolean[n];
                for (int j = 0; j < flags.length; j++) {
                        flags[j]=true;
                }
                int countNum=0;//定义报的数
                int index=0;   //定义索引
                int inCount=n; //定义在圈内的人数
                while(inCount>1){
                        if(flags[index]){
                                countNum++;
                              if (countNum==m) {                                                                     flags[index]=false;
                                    inCount--;
                                     countNum=0;
                              }   
                        }
                        index++;
                        if (index==n)
                                index=0;
                }
               
               
                for (int i = 0; i < flags.length; i++) {
                        if (flags) {
                                System.out.println("留下的是第"+(i+1)+"个人");
                        }        
                }
               
        }

}






作者: FunnyKing    时间: 2016-8-3 20:04
6666666学习一下




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