关于约瑟夫环的一个问题

LittleSunlight 2017-10-25 01:20:47
有n个人围成一圈,从第一个人开始报数(从1到3报数),报道3的人去掉,继续报数,问最后剩下的人是第几位? (休息只报1到3)
...全文
229 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LittleSunlight 2017-10-27
  • 打赏
  • 举报
回复
谢谢各位了。
hellorichen 2017-10-25
  • 打赏
  • 举报
回复
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);  
            }  
        }  
    }  
}
qq_40512160 2017-10-25
  • 打赏
  • 举报
回复
System.out.println("删除的数字是:"+i); 这个忘记删除了,。我自己测试用的 不好意思哈
qq_40512160 2017-10-25
  • 打赏
  • 举报
回复
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)); } 希望可以帮到你
xzxmustwin 2017-10-25
  • 打赏
  • 举报
回复
我记得很早之前学java的时候 韩顺平老师的课里大概第11讲里面有。你可以网上找视频自己学习一下

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧