zoukankan      html  css  js  c++  java
  • java中约瑟夫环代码实现

    问题原型:

        传说在很久很久以前,有一架搭载着n个人的飞机出现了故障,迫降在了一个荒岛上。飞机彻底报废后,这些人用飞机的残骸建成了一艘只能容纳一个人乘坐的小船,那么怎么去确定这n个人中哪个人有资格上船呢?于是,这n个人采用了下面的方式来解决这个困境。

    问题描述:

    假设有N个人围成一圈,每个人都有从1到N的唯一顺序编号。接下来从编号为1的人开始顺序报数。报到M号的人退出这个圈。然后由下一个人重新由1开始进行报数,如此循环往复,那么最终留下来的是编号为多少的那个人呢?

    import  java.util.Scanner;

    public class Out{

        public static void main(String args[])

         {

           Out out=new Out();

         //接收用户输入,获得出列人员的编号N

      Scanner sc=new Scanner(System.in);

          System.out.println("请输入参与人数总数:");

         int N=   sc.nextInt();

       //接收用户输入,获得出列人员的编号M

         System.out.println("请输入出列人编号:");

          int M=sc.nextInt();

          //建立布尔型的数组,长度为总人数

          Boolean rs[]=new Boolean[N];

        //初始化布尔型数组,初始值均为true

       for(int i=0;i<N;i++){

            rs[i]=true;

            }

         int n=N;//剩余的人数

         int m=0;//报数的编号

          out.save();

        //打印出最后留下来的人员的编号

        for(int k=0;k<N;k++){

         if(rs[k]){

         System.out.println("剩余的人为第"+(k+1)+"个人");

        break;

       }

    }

     }

      public void save (){

      while (n>1)

         for(int j=0;j<N;j++){

           if(r[j]) {

            m++;

            if( m==M){

              m=0;

             rs[j]=false;

            n--;

            }

       }

    }

    }

  • 相关阅读:
    关于IE11浏览器同意请求只执行一次的解决方法
    基于Vue+iView+OpenLayer在IE11上运行的方法总结
    vue 树形目录结构
    css中DIV中字过多时,使用省略号的方法
    hls.js在vue中的使用
    SQL优化
    Python 实现自动化 Excel 报表
    C# HttpClient 请求认证、数据传输笔记
    任务队列处理
    判断是否包含中文
  • 原文地址:https://www.cnblogs.com/Feiyang-Lafe/p/5995251.html
Copyright © 2011-2022 走看看