Java 解决约瑟夫问题
约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)
有这样一个故事,15个教徒和15个非教徒在深海遇险必须讲一半的人投到海中,其余的人才能获救,于是想出这样过一个办法,30个人围城一圈。从第一个人开始一次报数,每次数到9,就将这个人扔到海中,直到剩余15个人为止。问怎样的排法,使得每次扔到海中都是非教徒
现在的一种办法就是一个Boolean数组来模拟30个人,非教徒为false。刚开始都没true,当数到9就为false,如果当前位置已经为false,就一到下个不为false 的位置。
算法代码如下
package com.huwei.java;
public class Test {
	public static void main(String[] args) {
		Boolean[] userBoolean = new Boolean[30];
		for (int i = 0; i < userBoolean.length; i++) {
			userBoolean[i] = true;
		}
		for (int i = 0; i < userBoolean.length; i++) {
			System.out.print(i+"="+userBoolean[i]+"  ");
		}
		System.out.println();
		int count = 0;
		int length = userBoolean.length;
		int index = 0;
		while (length >15) {
			count ++ ;
			if (count == 9) {
				count = 0 ;
				while (!userBoolean[index]) {
					index ++ ;
				}
				userBoolean[index] = false;
				length -- ;
			}
			index ++;
			if(index == userBoolean.length) index = 0;
		}
		for (int i = 0; i < userBoolean.length; i++) {
			System.out.print(i+"="+userBoolean[i]+"  ");
		}
	}
}
结果如下


Java 解决约瑟夫问题的更多相关文章
- 循环列表的Java实现,解决约瑟夫环问题
		import java.util.Scanner; /** * 循环列表的Java实现,解决约瑟夫环问题 * * @author LIU * */ public class LinkedList { ... 
- php实现单,双向链表,环形链表解决约瑟夫问题
		传智播客PHP学院 韩顺平 PHP程序员玩转算法第一季 http://php.itcast.cn 聊天篇: 数学对我们编程来说,重不重要? 看你站在什么样的层次来说. 如果你应用程序开发,对数学要求 ... 
- Java解决CSRF问题
		项目地址: https://github.com/morethink/web-security-csrf CSRF是什么? CSRF(Cross-site request forgery),中文名称: ... 
- PHP算法学习(8) 环形链表 解决约瑟夫问题
		2019年2月25日17:29:17 Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈 ... 
- C语言解决约瑟夫问题详解的代码
		将开发过程中比较重要的一些内容做个收藏,下面的内容是关于C语言解决约瑟夫问题详解的内容,希望能对码农有帮助. #pragma once #include<vector> class PRO ... 
- php解决约瑟夫环的问题
		php里面解决约瑟夫环还是比较方面的,但是下面的方法太费空间 <?php class SelectKing{ private $m;//幅度 private $n;//总数 public fun ... 
- C++循环链表解决约瑟夫环问题
		约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题. 什么是约瑟夫环? “约瑟夫环是一个数学的应用问题:已知n个人(以 ... 
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
		java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 标签: hashmaphashmap冲突解决冲突的方法冲突 2016-0 ... 
- PHP解决约瑟夫环问题
		PHP解决约瑟夫环问题 一.总结 二.PHP解决约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ... 
随机推荐
- 部署JProfiler监控tomcat
			下载JProfiler包 wget http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_9_2.rpm 安装JPr ... 
- 阿里云ECS服务器配置(Ubuntu+JAVA+Tomcat+Mysql)
			最近购买了阿里云的ECS服务器,就服务器的安装配置做简要的说明,也方便日后查看. 1.远程操作服务器 远程操作服务器可以使用putty工具,下载地址:http://pan.baidu.com/s/1q ... 
- [转].NET Core中的认证管理解析
			本文转自:http://www.cnblogs.com/durow/p/5783089.html 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用 ... 
- Linux下使用crontab定时备份日志
			上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 ... 
- AC日记——砍树 codevs 1388
			1388 砍树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 伐木工人米尔科需要砍倒M米长的木 ... 
- word-break|overflow-wrap|word-wrap——CSS英文断句浅析
			---恢复内容开始--- word-break|overflow-wrap|word-wrap--CSS英文断句浅析 一 问题引入 今天在再次学习 overflow 属性的时候,查看效果时,看到如下结 ... 
- 【hrbust2294】修建传送门
			题意 哈理工2016级新生程序设计全国邀请赛B题 n个点1~n,i到i+1的距离为a[i],现在可以在两个点之间建一个传送门,则两点之间距离为0,求建传送门后1号出发的最远距离最小是多少? 题解 a[ ... 
- 在Arcscene绘制管线三维横断面(AE绘制三维点阵文字)
			根据数据信息动态生成三维管线及横断面表格.效果图如下: 在获取信息后,直接构造点阵进行文字绘制即可. 绘制IElement代码: /// <summary> /// 绘制三维文字 /// ... 
- iOS推送证书转pem文件
			iOS推送证书转 .pem文件. 推送证书转pem文件openssl x509 -in apns_miaobozhibo.cer -inform der -out apns_miaobozhibo.p ... 
- OBS-Studio二次开发记录
			OBS-Studio 是一款跨平台的,开源的视频直播客户端软件. 公司需要对他进行二次开发,开发的目的是使用它的录屏功能. 开发的要求是:定制全新的界面,所见即所得,window系统兼容要好. 开发步 ... 
