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--;

            }

       }

    }

    }

  • 相关阅读:
    nodejs修改jade为html的方法(ejs is not defined解决)
    http协议简单解析
    有序序列ol li 详解(ol li 标号未显示?)
    html5新标签及废弃元素
    HTML <!DOCTYPE> 声明详解
    ACM组队安排---递推
    使用CORDIC算法求解角度正余弦及Verilog实现
    Xilinx FPGA的专用时钟引脚及时钟资源相关
    【转】上拉下拉电阻、I/O输出(开漏、推挽等)
    Testbench文件编写纪要(Verilog)
  • 原文地址:https://www.cnblogs.com/Feiyang-Lafe/p/5995251.html
Copyright © 2011-2022 走看看