zoukankan      html  css  js  c++  java
  • Algs4-1.3.37Josephus问题

    1.3.37Josephus问题。在这个古老的问题中,N个身陷绝境的人一致同意通过以下方式减少生存人数。他们围坐成一圈(位置记为0到N-1)并从第一个人开始报数,报到M的人会被杀死,直到最后一个人留下来。传说中Josephus找到了不会被杀死的位置。编写一个Queue的用例Josephus,从命令行接受N和M并打印出人们被杀死的顺序(这也将显示Josephus在圈中的位置)。
    % java Josephus 7 2 
    1350426
    答:
    图片
    public class test
    {
       public static void main(String[] args)
       {
          int N=Integer.parseInt(args[0]);
          int M=Integer.parseInt(args[1]);
          boolean[] a=new boolean[N];
          Queue<Integer> q=new Queue<Integer>();
          for(int i=0;i<N;i++)
              a[i]=true;
          //
          int remain=N;
          int i=0;
          int say=0;
          while(remain!=0)
          {
              if(a[i]) say++;
              if(say==M)
              {
                  say=0;
                  a[i]=false;
                  remain--;
                  q.enqueue(i);
              }
              i++;
              if(i==N) i=0;
           }//end while
           for(Integer item:q)
               StdOut.print(item+" ");
       }//end main
      }//end class

  • 相关阅读:
    sudo详解
    Linux按照CPU、内存、磁盘IO、网络性能监测
    基于kickstart定制自动化安装的linux镜像系统
    基于busybox和LFS的linux系统定制
    syslog及syslog-ng详解 日志服务器
    yum报错
    二进制程序及其依赖库的移植脚本
    Linux 系统裁剪
    linux 内核手动编译
    linux rc.sysinit文件详解
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854318.html
Copyright © 2011-2022 走看看