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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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[i]) {
                                System.out.println("留下的是第"+(i+1)+"个人");
                        }        
                }
                
        }

}





1 个回复

倒序浏览
6666666学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马