文档章节

m个人围成一圈一直报数n,结尾的人出局一直到剩下最后一个,打印出出局的人的坐标

maskleo
 maskleo
发布于 2015/04/21 22:31
字数 284
阅读 47
收藏 0
package des.tiny.test.other;

/**
 * 
 * @ClassName: OutGame
 * @Description: m个人围成一圈一直报数n,结尾的人出局一直到剩下最后一个,打印出出局的人的坐标
 * @author masques@sina.com
 * @date 2015年4月15日 下午8:16:34
 */
public class OutGame {
	public static void main(String[] args) {
		int allCount = 9;
		final int roundCount = 3;
		final int arrSize = allCount;
		boolean[] arr = new boolean[arrSize];
		initArr(arr, Boolean.TRUE.booleanValue());
		int initIndex = 0;// 初始化游标
		while (allCount > 0) {
			int count = 0;
			for (int i = initIndex; i < arrSize; i++) {
				if (arr[i]) {
					count++;
				}
				if (count == roundCount) {
					System.out.println(i + 1);
					arr[i] = Boolean.FALSE.booleanValue();
					initIndex = i + 1;// 得到下一个遍历开始的游标
					if (initIndex == arrSize)
						initIndex = 0;//得到最后一个数,从初始开始
					break;
				}
				// 重置游标
				if (i == arrSize-1 && count < roundCount) {
					i = -1;//因为循环后还会执行i++;从0开始,故此处为-1;
				}
			}
			allCount--;
		}
	}

	//初始化所有的标志
	private static void initArr(boolean[] arr, boolean flag) {
		for (int i = 0; i < arr.length; i++) {
			arr[i] = flag;
		}
	}
}


© 著作权归作者所有

maskleo
粉丝 17
博文 128
码字总数 17344
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

maskleo
maskleo 博主
//初始化所有的标志
private static void initArr(boolean[] arr, boolean flag) {
for (int i = 0; i < arr.length; i++) {
arr[i] = flag;
}
}

这个方法已有被封装好的
spring的工具类
#此处输入软件名##此处输入软件名#
数据结构与算法分析(1)——约瑟夫问题

0 问题描述   据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了...

benniaozj
05/14
0
0
N个人围成一环形圈,第一个人从1开始报数,报道M的人出列,直到最后一个同学

问题:N个人围成一环形圈,第一个人从1开始报数,报道M的人出列,直到最后一个同学并输出 分析:N个人保存在大小为N的数组中,索引为0的人员从1开始报数,每报道M的索引被清除,总共清除N-1...

hjun169
2013/04/03
0
0
数据结构与算法-C语言篇9-用循环链表实现约瑟夫环问题

数据结构与算法-目录 前言 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,...

香沙小熊
2018/01/21
0
0
关于递推算法求解约瑟夫环问题P(n,m,k,s)

一. 问题描述   已知n个人,分别以编号1,2,3,...,n表示,围坐在一张圆桌周围。从编号为k的人开始报数1,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律...

胡壮壮
2017/05/02
0
0
用C语言编写:有n个人围成一圈,顺序排号...

用C语言编写:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,请输出报数出列圈及最后留下的数据和在原来位置的第几号? 要求如下: (1)用函数来实现...

wnxyy
2014/04/21
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
6
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
17
0
浅谈java过滤器Filter

一、简介 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml...

青衣霓裳
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部