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

  • 相关阅读:
    [BZOJ 1698] 荷叶池塘
    [BZOJ 3132] 上帝造题的七分钟
    [JLOI2011] 飞行路线
    [Codeforces Round49F] Session in BSU
    [BZOJ 3036] 绿豆蛙的归宿
    CRC-16校验原理
    ubuntu下mysql的安装与配置
    【OpenCV】边缘检测:Sobel、拉普拉斯算子
    我对sobel算子的理解
    梯度算子(普通的+Robert + sobel + Laplace)
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854318.html
Copyright © 2011-2022 走看看