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

            }

       }

    }

    }

  • 相关阅读:
    C#批量附加指定目录下的所有数据库文件到数据库中
    UDP聊天代码发送消息客户端代码
    IE6 中 a:hover 的bug
    HTML 里的 if 条件用法
    How to Implement Ajax in WordPress Themes
    如何顺利的通过高级职称评审(转)
    WEB前端工程师如何做职业规划?(转)
    去掉IE浏览器里的脚本控件提示
    网页的横向滚动条
    Top 10 CSS Table Designs(转)
  • 原文地址:https://www.cnblogs.com/Feiyang-Lafe/p/5995251.html
Copyright © 2011-2022 走看看