代码详解Java猴子选王问题(约瑟夫环)
作者:彬菌 发布时间:2023-09-16 07:33:43
标签:Java,猴子选王,约瑟夫环
关于约瑟夫环的基本知识:
罗马人攻占了乔塔帕特,41人藏在一个山洞中躲过了这场浩劫。这41个人中,包括历史学家josephus和他的一个朋友。剩余的39个人为了表示不向罗马人屈服,决定 * 。大家决定了一个 * 方案,所有这41人围城一个圆圈,由第一个人开始顺时针报数,没报数为3的人就立刻 * ,然后由下一个人重新开始报数仍然是每报数为3的人就立刻 * ,......,知道所有人都 * 死亡为止.约瑟夫和他的朋友并不想 * ,于是约瑟夫想到了一个计策,他们两个同样参数到 * 方案中,但是最后却躲过了 * 。请问是怎么做到的
代码分享:
import java.util.HashMap;
import java.util.Map;
public class MonkeyKing {
public static void main(String args[]) {
int n = 100; // 猴子总数
int m = 3; // 报数出局数
@SuppressWarnings("rawtypes")
Map map = new HashMap();
int nn = 1; // 报数序号
int mm = 1; // 报数号
System.out.println("-----------------------" + n + "只猴子选大王开始-----------------------");
for (int i = 1; i < n + 1; i++) {
map.put(i, i);
}
while (map.size() > 1) {
if (mm == 3) {
map.remove(nn);
}
nn++;
if (nn == n + 1) {
nn = 1;
}
if (map.get(nn) != null) {
mm++;
}
if (mm == m + 1) {
mm = 1;
}
}
String result = map.values().toString();
System.out.println("第" + result.substring(1, result.length() - 1) + "只猴子当选猴王");
}
}
来源:https://www.idaobin.com/archives/364.html


猜你喜欢
- 本文实例为大家分享了Android实现控件拖动效果的具体代码,供大家参考,具体内容如下1.今天突然想到做个实现个控件拖动效果,就来试试,一查
- 项目需要从其他网站获取数据,因为是临时加的需求,在开始项目时没想到需要多数据源于是百度了一下,发现只需要改动一下Spring 的applic
- 1、抓取一般内容需要三个类:WebRequest、WebResponse、StreamReader所需命名空间:System.Net、Sys
- 最近项目中用到的两种文件上传方式做一下总结:一. uploadify:uploadify控件的scripts和styles在这里:图片上传J
- 本文介绍了Maven构建自己的第一个Java后台的方法,分享给大家,具体如下:1.知识后顾关于如何运用Maven构建自己的第一个项目,上期我
- 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,
- 本文实例讲述了Java枚举类用法。分享给大家供大家参考。具体如下:package com.school.stereotype; /** *
- 网上看了很多篇文章关于如何配置mybatis的logback日志的,复杂的简单的都有,但是有用的没几个,耽误了很多时间。通过对logback
- 今天给大家讲讲有关自定义对话框的相关内容,前面两篇都在在利用系统提供的函数来实现对话框,但局限性太大,当我们想自己定义视图的时候,就不能利用
- 一、创建Config配置中心项目1.添加依赖 <dependency> <groupId>org.sp
- Java 存储模型和共享对象详解很多程序员对一个共享变量初始化要注意可见性和安全发布(安全地构建一个对象,并其他线程能正确访问)等问题不是很
- 重写java object类的equals方法覆盖equals方法请遵守约定什么情况下要覆盖equals方法容易违反的对称性不易察觉的传递性
- 在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。使用流程【1】准备工作:在项目的工具包下导入HttpClient
- Zuul 简介Zuul 的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如 /api/admin 转发到到 Admin 服务,/a
- 本文实例为大家分享了C#生成唯一订单号的具体代码,供大家参考,具体内容如下根据GUID+DateTime.Now.Ticks生产唯一订单号/
- 本文介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,分享给大家,具体如下:1.为了避免需要证书,所以用一个类继承Defa
- 将Excel转为PDF格式时,通常情况下转换出来的PDF页面都是默认的宽度大小;如果Excel表格数据的设计或布局比较宽或者数据内较少的情况
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:public class RoundImageView extends ImageVie
- 这里以JDK 7U15在 Windows x86平台下的安装为例,其他平台安装与此类同。下载JDK请查看:JDK最新下载地址【含下载方法】①
- @SpringBootApplication的使用1. Spring Boot 的核心1.1. 入口类和 @SpringBootApplic