有n个人围成一圈,从第一个人开始报数(从1到3报数),报道3的人去掉,继续报数,问最后剩下的人是第几位?  (休息只报1到3)

解决方案 »

  1.   

    我记得很早之前学java的时候 韩顺平老师的课里大概第11讲里面有。你可以网上找视频自己学习一下
      

  2.   

    ArrayList list = new ArrayList(); //用于存放人数
    for (int i = 1; i <= 80; i++) { //这里的人数你自己改那个80就好了,该吃饭了。懒得写Scanner了
    list.add(i);
    }
    int num = 0;//数的数字
    int i = 0;//数组里的编号
    //循环删除集合的人数
    while(list.size()>1){
    //当数到最后的时候从头开始数
    if(i==list.size()){
    i=0;
    }
    num++;
    //数到3删除集合里的人
    if(num==3){
    System.out.println("删除的数字是:"+i);
    list.remove(i);
    num=0;
    i--;
    }
    i++;
    }
    //最后剩余的那个人的编号
    for (int j = 0; j < list.size(); j++) {
    System.out.println(list.get(j));
    }
    希望可以帮到你
      

  3.   

    System.out.println("删除的数字是:"+i);
    这个忘记删除了,。我自己测试用的
    不好意思哈
      

  4.   

    package com.yuesefu;
    /**
    * @filename Yue.java
    * @author l
    * @version 创建时间:2017年10月25日 下午6:36:44
    * @description 
    */
    import java.util.ArrayList;  
    import java.util.List;  
    import java.util.Scanner;  
      
    public class Yue {  
        public static void main(String[] args) {  
            Scanner scanner = new Scanner(System.in);  
            System.out.print("请输入总人数:");  
            int totalNum = scanner.nextInt();  
            System.out.print("请输入报数的大小:");  
            int cycleNum = scanner.nextInt();  
            yuesefu(totalNum, cycleNum);  
        }  
      
       public static void yuesefu(int totalNum, int countNum) {  
            // 初始化人数  
            List<Integer> start = new ArrayList<Integer>();  
            for (int i = 1; i <= totalNum; i++) {  
                start.add(i);  
            }  
            //从第K个开始计数  
            int k = 0;  
            while (start.size() >0) {  
                k = k + countNum;  
                //第m人的索引位置  
                k = k % (start.size()) - 1;  
               // 判断是否到队尾  
                if (k < 0) {  
                    System.out.println(start.get(start.size()-1));  
                    start.remove(start.size() - 1);  
                    k = 0;  
                } else {  
                    System.out.println(start.get(k));  
                    start.remove(k);  
                }  
            }  
        }  
    }