zoukankan      html  css  js  c++  java
  • 约瑟夫环的java实现

    转自:http://www.cnblogs.com/timeng/p/3335162.html

    约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

    直接给出代码,欢迎拍砖。

    复制代码
     1 package com.timeng;
     2 
     3 import java.util.ArrayList;  
     4 import java.util.List;  
     5 import java.util.Scanner;  
     6   
     7 public class Yue {  
     8     public static void main(String[] args) {  
     9         Scanner scanner = new Scanner(System.in);  
    10         System.out.print("请输入总人数:");  
    11         int totalNum = scanner.nextInt();  
    12         System.out.print("请输入报数的大小:");  
    13         int cycleNum = scanner.nextInt();  
    14         yuesefu(totalNum, cycleNum);  
    15     }  
    16   
    17    public static void yuesefu(int totalNum, int countNum) {  
    18         // 初始化人数  
    19         List<Integer> start = new ArrayList<Integer>();  
    20         for (int i = 1; i <= totalNum; i++) {  
    21             start.add(i);  
    22         }  
    23         //从第K个开始计数  
    24         int k = 0;  
    25         while (start.size() >0) {  
    26             k = k + countNum;  
    27             //第m人的索引位置  
    28             k = k % (start.size()) - 1;  
    29            // 判断是否到队尾  
    30             if (k < 0) {  
    31                 System.out.println(start.get(start.size()-1));  
    32                 start.remove(start.size() - 1);  
    33                 k = 0;  
    34             } else {  
    35                 System.out.println(start.get(k));  
    36                 start.remove(k);  
    37             }  
    38         }  
    39     }  
    40 }  
    复制代码
  • 相关阅读:
    什么是进程
    进程控制
    MMAP文件内存映射
    I/O多路转接模型
    LINUX创建管道文件
    文件描述符复制
    LINUX改变文件大小
    类作用域
    LINUX文件定位
    War of the Corporations CodeForces
  • 原文地址:https://www.cnblogs.com/cugwx/p/3649889.html
Copyright © 2011-2022 走看看