Java-n个人报数

题目:

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

大概思路:假设有3个人,它们围成一圈,按照顺时针或逆时针给他们排序,从第一个人开始说,凡是报到3的人退出。其余人继续围成一个圈子,直到只剩下一个人。

问最后留下来的是哪一位?

package com.zhj.www;import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class Test {static int n;  //从屏幕输入固定的人数n;static int[] people;  //人的数组;public static void main(String[] args) {          System.out.println("请输入人数n:");  Scanner input=new Scanner(System.in);  n=input.nextInt();  people=new int[n];         //开始非3的数设置报数  selectNoThreeToSet();           //打印结果  printResult();  }  //开始非3的数设置报数  private static void selectNoThreeToSet() {  int notThreeCount=n,num=1;      //不是3的个数,用来作为一个跳出循环的条件,当notThreeCount=1时,跳出循环,代表只剩一个了  for(int i=0;;i++) {  if(i==n)           		//检索不是只遍历一次数组,需要循环遍历,当下标i自加到数组最后时,需要从0开始自加 ,多次遍历i=0;   if(people[i]!=3) {     //只有不为0的进行赋值  if(num>3)          //报号的数,循环123,如果大于3即4,重新从1开始  num=1;  people[i]=num;  if(num==3)      //当只有报数为3时notThreeCount自减  notThreeCount--;  num++;              //如果一个同学报数成功,下一个需要加1(这里不考虑循环回1)  }  if(notThreeCount==1)  break;  }     }  //打印结果  private static void printResult() {  int t=0;  for(int i=0;i<n;i++) {  System.out.print(people[i]+"\t");  if(people[i]!=3)                  t=i;  }     System.out.printf("\n最后剩下的数为原来第%d号的同学\n",t+1);  }  }  

运行结果:
请输入人数n:
10
3 3 3 2 3 3 3 3 3 3
最后剩下的数为原来第4号的同学。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

100个直接可以拿来用的JavaScript实用功能代码片段

http://www.cnblogs.com/wxydigua/p/3314274.html转载于:https://www.cnblogs.com/kevinge/p/3316315.html

[转]JS Cookie 中文乱码

首先是一个解析cookie的函数&#xff1a; <script type"text/javascript"> function getCookie(name) { var cookies document.cookie.split(";"); for(var i0;i<cookies.length;i) { var cookie cookies[i]; var cookieStr cookie.…

Java线程中关于Synchronized的用法

synchronized是Java中的关键字&#xff0c;是一种同步锁。它修饰的对象有以下几种&#xff1a; 1. 修饰一个代码块&#xff0c;被修饰的代码块称为同步语句块&#xff0c;其作用的范围是大括号{}括起来的代码&#xff0c;作用的对象是调用这个代码块的对象&#xff1b; 2. 修饰…

cmd命令行设置环境变量

http://blog.sciencenet.cn/blog-51026-566742.html 1、查看当前所有可用的环境变量&#xff1a;输入 set 即可查看。 2、查看某个环境变量&#xff1a;输入 “set 变量名”即可&#xff0c;比如想查看path变量的值&#xff0c;即输入 set path。 3、修改环境变量 &#xff1a;…

Java线程之多线程与多进程(1)——以操作系统的角度述说线程与进程

任务调度 线程是什么&#xff1f;要理解这个概念&#xff0c;须要先了解一下操作系统的一些相关概念。大部分操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式&#xff0c;也就是说一个任务执行一小段时间后强制暂停去执行下一个任务&#xff0c;每个任务…

用 PS 调整服务器时间

用 PS 调整服务器时间 Powershell 有一个命令用来调整计算机的时间&#xff0c; Set-Date -Adjust&#xff0c;但是&#xff0c;只能调整本地时间&#xff0c;不能调整远程的计算机时间。 function AdjustDCTime ( $Server, $addTime ){ $Svr Get-WmiObject Win32_Operatin…

Java线程之多线程与多进程(2)——线程优先级与线程安全

线程优先级 现在主流操作系统(如Windows、Linux、Mac OS X)的任务调度除了具有前面提到的时间片轮转的特点外&#xff0c;还有优先级调度(Priority Schedule)的特点。优先级调度决定了线程按照什么顺序轮流执行&#xff0c;在具有优先级调度的系统中&#xff0c;线程拥有各自的…

mahout贝叶斯算法开发思路(拓展篇)1

首先说明一点&#xff0c;此篇blog解决的问题是就下面的数据如何应用mahout中的贝叶斯算法&#xff1f;&#xff08;这个问题是在上篇&#xff08;。。。完结篇&#xff09;blog最后留的问题&#xff0c;如果想直接使用该工具&#xff0c;可以在mahout贝叶斯算法拓展下载&#…

Java线程之多线程与多进程(3)——Java中的多线程

单线程 任何程序至少有一个线程&#xff0c;即使你没有主动地创建线程&#xff0c;程序从一开始执行就有一个默认的线程&#xff0c;被称为主线程&#xff0c;只有一个线程的程序称为单线程程序。如下面这一简单的代码&#xff0c;没有显示地创建一个线程&#xff0c;程序从mai…

几种常用控件的使用方法

1.UIActivityIndicatorView的使用 UIActivityIndicatorView *activity[[[UIActivityIndicatorViewalloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]autorelease]; z [activity setFrame:CGRectMake(150,150, 50, 50)]; [self.window addSubview:activ…

Java-正则表达式

什么是正则表达式&#xff1f; 正则表达式(Regular Expression)就是用某种模式去匹配一类字符串的公式。如你要在一篇文章中查找第一个字是“李”最后一个字是“建”的三个字的姓名&#xff0c;即“李*建”&#xff1b;那么“李*建”就是公式&#xff0c;也称作模式(Pattern)&a…

tab标签的另一种写法

<div class"good"><ul><li><span>歌曲精选</span></li><li class"other"><span>MV精选</span></li></ul><div class"music_good"><p><span>丁当</span…

java 中 if与while的区别

if&#xff1a;就是一个判断的&#xff0c;如果满足后面的条件就继续运行if语句里面的东西的&#xff0c;要是不满足就跳出来&#xff0c;执行else语句或执行下面的语句的 。while&#xff1a;就是循环语句的&#xff0c;当满足while里面的条件时&#xff0c;就会执行里面的循环…

install yael on the ubuntu 12.04

1. bits/predefs.h no such file or directory ??? sudo apt-get install gcc-multilib 2. sudo gedit /etc/profile PATH$PATH:/usr/local/MATLAB/R2012a/bin source /etc/profile 3.ubuntu 切换gcc 版本 1&#xff09;sudo apt-get install gcc-4.4 g-4.4 g-4.4-multi…

Java 线程多线程编程3---线程同步之生产者与消费者问题

生产者与消费者问题&#xff1a; 第一步&#xff1a;把架子搭起来 package com.zhj.www;public class ProceduerConsumer {public static void main(String[] args) {} }//馒头实体 class wotou{int id;wotou(int id) {this.id id;}public String toString() {return "wo…

windows 服务实例

参考来源:http://blog.csdn.net/morewindows/article/details/6858216 参考来源: http://hi.baidu.com/tfantasy/item/aefa43d66b470a2b38f6f76c 剩下的都是我自己整理的。 在VS2012中新建一个Windows 服务的项目。然后在解决方案目录下找到Services1.cs&#xff0c;切换到代码…

Java 线程多线程编程2---线程同步

来模拟一个死锁&#xff08;互相等待&#xff09;&#xff1a; TestDeadLock.java package com.zhj.www;public class TestDeadLock implements Runnable {public int flag 1;static Object o1 new Object();static Object o2 new Object();public void run() {System.out.p…

Java网络编程1---基础

TCP/IP:事实上的标准 自己编的应用程序&#xff1a;应用层 TCP/UDP层 IP层 物理层 数据封装&#xff1a;第五层只与第四层打交道。 数据拆封《TCP/IP详解》网络底层 IP巨大的贡献&#xff1a;提供了独一无二的IP地址。 内网IP&#xff1a;虚假的 子网掩码&#xff1a;255.255.2…

Java网络编程2---Socket-TCP编程

Sockct:插座Socket是关于TCP的。 端口号&#xff1a;两个字节->65536个端口号&#xff0c;一个应用程序占多个端口号&#xff1b; 但是假设一个应用程序占一个端口号&#xff1b;一台电脑会有65535个应用程序。 自己编写程序要占用端口号1024以上后的。 80端口&#xff1a;网…

winform绑定多张图片

开发winform程序的时候经常设计到要显示多张图片的问题&#xff0c;其解决思路一般是先遍历文件夹中的所有图片&#xff0c;然后再把这些图片添加到ImageList控件中&#xff0c;最后再绑定显示出来。这里我们介绍两种绑定的方法&#xff1a; &#xff08;一&#xff09;动态生成…