码迷,mamicode.com
首页 > 编程语言 > 详细

java实现猴子选大王问题(约瑟夫问题)

时间:2017-02-25 12:02:57      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:位置   java   monk   move   题目   size   util   arraylist   target   

题目: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;

       

 

  

java实现猴子选大王问题(约瑟夫问题)

标签:位置   java   monk   move   题目   size   util   arraylist   target   

原文地址:http://www.cnblogs.com/hhhshct/p/6441347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!