zoukankan      html  css  js  c++  java
  • Joseph_Circle(约瑟夫环)

    //约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,

    //数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆

    //桌周围的人全部出列。

    //Java源程序如下

    package Joseph_Circle;

    import java.util.ArrayList;

    import java.util.List;

    import java.util.Scanner;

    public class Joseph_circle {

      public static void Joseph(int total,int N,int count)

      {

      //初始化人数

        List<Integer> start = new ArrayList<Integer>(); //Java中的泛型,即ArrayList只能存放整型数

        for(int i=1;i<=total;i++)

        {

          start.add(i);

        }

        //从第k个开始计数

        int k=N;

        while(start.size()>0)

        {

          k = k + count - 1; //从第3个人开始数,数5个人,应该是第7个人

          //第m个人的位置

          k = k % (start.size()) - 1;

          //判断是否到队尾

          if(k<0)

          {

            System.out.print(start.get(start.size()-1) + "  ");

            start.remove(start.size() - 1);

            k=0;

          }

          else

          {

            System.out.print(start.get(k) + "  ");

            start.remove(k);

          }

        }

      }

      public static void main(String[] args)

      {

        Scanner reader=new Scanner(System.in);

        System.out.print("请输入总人数:");

        int totalNum=reader.nextInt();

        System.out.print("从第几个人开始报数:");

        int start_N=reader.nextInt();

        System.out.print("请输入报数的大小:");

        int cycleNum=reader.nextInt();

        Joseph(totalNum,start_N,cycleNum);

        reader.close();

      }

    }

    运行结果:

  • 相关阅读:
    一种开源的分布式消息系统Nats
    资产盘点:除了金钱,一个人还有哪些资产?
    博客首页规则改版公告
    <html>
    欢迎使用CSDN-markdown编辑器
    java 小程序查看器 启动:未初始化小程序 解决方法
    Hadoop2.6.0版本号MapReudce演示样例之WordCount(一)
    深入学习IOZone【转】
    i.MX6UL -- PWM用户空间使用方法【转】
    linux PWM蜂鸣器移植以及驱动程序分析【转】
  • 原文地址:https://www.cnblogs.com/duanqibo/p/11193050.html
Copyright © 2011-2022 走看看