zoukankan      html  css  js  c++  java
  • java实现猴子选大王问题(约瑟夫问题)

    题目:m只猴子围成一圈报数,报n的猴子自动离开,然后下一位重新从1开始报数,一直循环,最后剩下的那个猴子就是猴大王,写出程序求出最后是大王的那只猴子最初的位置。

      package learn;

      import java.util.ArrayList;

      public class Main {
          public static void main(String[] args) {
            //创建一个list集合,用来存放猴子对象(为方便推演,暂定猴子总数m为6,每次数到数n为3)
              ArrayList<String> list = new ArrayList<String>();
              for (int i=0 ;i<6;i++) {
                  list.add("monkey"+i);
              }
             //猴子总数,m
              int total = 6;
              //每次数到的目标数,n
              int target = 3;
              //数组下表
              int index = 0;
              //计数器
              int count = 0;
              //剩余猴子的数量,初始值等于total
              int remiander = total;
              //进行判断,只要剩余数量大于1,就一直执行
              while(remiander>1){
                  /*如果数字下标等于剩余数量,说明已经遍历至数组结尾,需将数组下标重置为0
                  相当于猴子站成一排,到最后一只报完数后,剩下的第一只跟着继续报数,跟围城一圈效果一样*/
                  if(index==remiander){
                      index=0;
                  }
                  //如果该下标对应有值,说明应计数一次
                  if( list.get(index)!= null){
                      //计数标志加1
                      count++;
                      //如果继续标志与目标数相等
                      if(count==target){
                          //移除对应位置的数据
                          list.remove(index);
                          //剩余数量减一
                          remiander--;
                          //将计数器重置为0
                          count=0;
                          //开始下一次循环
                          continue;
                      }
                  }
                  //每次校验完毕后,执行至此处,下标加1
                  index++;
              }
              //打印输出最后剩下的猴子信息
              for (String monkey : list) {
                  System.out.println(monkey);
              }
          }
      }

      运行结果:m=6,n=3,结果为monkey0;

           m=8,  n=5,结果为monkey2;

           m=10,n=4,结果为monkey4;

           

      

  • 相关阅读:
    为什么使用GitHub
    java学习笔记
    mysql 内置功能 存储过程 创建有参存储过程
    mysql 字符串类型 char varchar
    前端 HTML 注释
    mysql 内置功能 存储过程 删除存储过程
    前端开发 目录
    mysql 内置功能 存储过程 创建无参存储过程
    mysql 内置功能 存储过程 目录
    mysql 内置功能 存储过程介绍
  • 原文地址:https://www.cnblogs.com/hhhshct/p/6441347.html
Copyright © 2011-2022 走看看