300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子

public static void main(String[] args) {
		/*
		 *  300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子,
		 *  问最后剩下的一个是从指定位置开始计数的第几个人?
		 */

		int num[]=new int[300];
		int i=0;     // 数组的下标计数器 0---299
		int count=0; // 退出的人数计数器 0---299
		int n=1;     // 数数的计数器         1---3

		while(count<299){
			// 数组的值如果是1,代表该位置的人不存在
			// 不存在的位置则直接跳过
			if(num[i]==1){
				i++;
				if(i>299) i=0;
				continue;
			}
			// 数数计数器值为3,代表该位置上的人需要退出
			if(n==3){
				num[i]=1;  // 代表退出
				count++;   // 退出的人数计数器累加
//				System.out.println("退出序号:"+(i+1)+",计数器:"+count);
			}

			n++;
			if(n>3) n=1;
			i++;
			if(i>299) i=0;
		}
//		System.out.println(count);
		for(i=0; i<num.length; i++){
			if(num[i]==0){
				System.out.println("最后剩下的序号为:"+(i+1));
			}
		}
	}

  

时间: 2024-10-29 19:06:36

300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子的相关文章

500个小朋友手拉手围成一个圈,依次按1、2、3报数,报到3的出列,最后一个留在圈里的是第几个?

public class Count3Quit{ //从数组的角度 public void m1(){ boolean[] child = new boolean[500]; for(int i=0;i<child.length;i++){ child[i] = true; } int count = 0; int left = child.length; int index = 0; while(left > 1){ if(child[index]){ count++; } if(count

Java迭代器问题 有100个人围成一个圈从1开始报数,报到14的这个人就要退出,然后其他人重新开始,从1报数,到14退出问:最后剩下的是100人中的第几个人 用listIterator迭代元素,并对集合进行删除操作

package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class ListIterator_baoshu14 { public static void main(String[] args) { /* * 第9题: 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出. * 然后其他人重新开始,从1报数,到14退出.问:最后剩

智慧城市,在中国的北海边再画一个圈——大连“中国首届智慧城市协同创新峰会”请你带好笔

这可能是中国第二次大规模地改变城市印象.从1979年,"在中国的南海边画了一个圈",用三十多年的时间,中国完成了从传统城市到现代城市的跨越,繁荣.机会.财富.梦想演变成激动人心的中国奇迹和城市骄傲.但随之而来,城市化进程也引发诸多的问题,社会保险.医疗.就业.安防.交通--所有的这些问题都为生活于此的每个城居者带来困扰. 现代化的中国城市需要改变,城市的管理需要提升,所有人都在发问,城市未来的发展空间在哪,围绕城市建设,商机在哪?如果城市已经拥有了摩天大楼.地铁公交.城际轻轨.繁华商铺

java例题_37 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位。

1 /*37 [程序 37 报数] 2 题目:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位. 4 */ 5 6 /*分析1====错误分析,没有注意到要退出圈子!!! 7 * 1.用一个数组存放n个1,从头开始报数 8 * 2.声明一个计数器,报数为3时,数组中的数赋为0,计数器重置 9 * 3.一直直到还剩下最后一个不为0的数,这个数的角标加1就是原来的几号 10 * 11 * 分析2:----利用A

用py2exe打包成一个exe文件

用py2exe打包成一个exe文件 http://blog.csdn.net/franktan2010/article/details/46514607

多个UIImage合并成一个UIImage

多个UIImage合并成一个UIImage 创建两个UIImage UIImage *image1 = [UIImage imageNamed:@"iOSDevTip"]; UIImage *image2 = [UIImage imageNamed:@"CodePush"]; 创建UIImage的方法有很多种,我们就简单的通过imageNamed:方法来创建. 合并之后的size CGSize size = CGSizeMake(image1.size.width

C#程序(含多个Dll)合并成一个Exe

把C#程序(含多个Dll)合并成一个Exe的超简单方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具.那该怎么办呢? 下文介绍一种超简单的方法,不用写一行代码就可轻松实现. 这里我们需要用到一款名为Fody.Costura的工具.Fody.Costura是一个Fody框架下的插件,可通过Nuget安装到VS工程中.安装之后,就可以将项目所依赖的DLL(甚至PDB)文件全部打

通过 Mesos、Docker 和 Go,使用 300 行代码创建一个分布式系统

[摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力,如何通过 300 行代码打造一个比特币开采系统. 时下,对于大部分 IT 玩家来说, Docker 和 Mesos 都是熟悉和陌生的:熟悉在于这两个词无疑已成为大家讨论的焦点,而陌生在于这两个技术并未在生产环境得到广泛使用,因此很多人仍然不知道它们究竟有什么优势,或者能干什么.近日, John W

如何把多个Android Project打包成一个APK

如何把多个Android Project打包成一个APK(你的项目如何引用其他项目). 如何把多个android project 打包成一个apk呢,其实原理是这样的,一个主project引用其他的project,其他project类似于jar包一样被引用,当然和jar的引用原理有很大的区别.下面是详细的说明. 第一步,把普通的android project设置成库项目 库项目也是一个标准的android项目,因此你先创建一个普通的android项目. 这个项目可以起任何的名称,任何的报名,设置