有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。
2015-10-25 09:54
671 查看
package 有n个人围成一圈顺序排号从第一个人开始报数;
/**
*
* @author 何虎
*
*/
public class Person
{
private int id;
private Person prev;
private Person next;
public Person getPrev()
{
return prev;
}
public void setPrev(Person prev)
{
this.prev = prev;
}
public Person getNext()
{
return next;
}
public void setNext(Person next)
{
this.next = next;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
/*
* 报数方法
*/
public void baoShu(Person person)
{
}
}
<pre name="code" class="java">package 有n个人围成一圈顺序排号从第一个人开始报数;
/**
*
* @author 何虎
*
*/
public class Report
{
static int k = 0; //标号,报数到三
static int life = 5; //多少个生存的人
static Person[] person = new Person[life];
public static void main(String[] args)
{
for(int i=0; i<life; i++) //初始化人数
{
Person per = new Person();
per.setId(i + 1);
person[i] = per;
}
while(life > 1) //报数
{
for(int i=0; i<life; i++)
{
if(life == 2) //人数不够标号强制通过,可以继续玩
{
k = 2;
}
if(k == 2) //报数到三死一个
{
for(int j=i; j<life-1; j++)
{
person[j] = person[j + 1];
}
life--; //生存的人减少一个
k = 0; //重新报数
}
k++;
}
}
for(int i=0; i<life; i++) //打印活着的人
{
System.out.println("最后活下来的人是原" + person[i].getId() + "号人");
}
}
}
/**
*
* @author 何虎
*
*/
public class Person
{
private int id;
private Person prev;
private Person next;
public Person getPrev()
{
return prev;
}
public void setPrev(Person prev)
{
this.prev = prev;
}
public Person getNext()
{
return next;
}
public void setNext(Person next)
{
this.next = next;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
/*
* 报数方法
*/
public void baoShu(Person person)
{
}
}
<pre name="code" class="java">package 有n个人围成一圈顺序排号从第一个人开始报数;
/**
*
* @author 何虎
*
*/
public class Report
{
static int k = 0; //标号,报数到三
static int life = 5; //多少个生存的人
static Person[] person = new Person[life];
public static void main(String[] args)
{
for(int i=0; i<life; i++) //初始化人数
{
Person per = new Person();
per.setId(i + 1);
person[i] = per;
}
while(life > 1) //报数
{
for(int i=0; i<life; i++)
{
if(life == 2) //人数不够标号强制通过,可以继续玩
{
k = 2;
}
if(k == 2) //报数到三死一个
{
for(int j=i; j<life-1; j++)
{
person[j] = person[j + 1];
}
life--; //生存的人减少一个
k = 0; //重新报数
}
k++;
}
}
for(int i=0; i<life; i++) //打印活着的人
{
System.out.println("最后活下来的人是原" + person[i].getId() + "号人");
}
}
}
相关文章推荐
- 高级学员:2015年10月24日作业
- iOS开发--手把手教你制作音乐播放器
- boost/config.hpp文件详解
- struts 下载中文名文件
- 01什么是ExtJs?
- 2015年10月23日作业
- html + CSS
- HDU 1242 Rescue (BFS+优先队列)
- 一年以后,我们还在
- Tomcat的四种web应用部署方式详解
- app发布到AppStore
- BNDM字符串匹配算法
- sprintf函数应用
- 由linux命令行下命令参数前的一横(-)和两横(--)的区别而得知的
- 学习使用C语言实现线性表
- WEBSHELL姿势之不安全的HTTP方法(渗透实验)
- NET基础课--Linq第三讲
- 归并排序和快速排序比较
- NET基础课--Linq第二讲
- java eclipse初次使用前的配置技巧汇总