JAVA语言问题
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
展开
2014-01-02
展开全部
import java.util.Scanner;
/**
* 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
*/
public class RingTest{
public static void main(String[] args){
//提示输入总人数
System.out.println("请输入做这个游戏的总人数n:");
Scanner sca=new Scanner(System.in);
int n=sca.nextInt();
System.out.println("按出圈的次序输出序号:");
//创建有n个值的数组
int[] a=new int[n];
//初始长度,以后出圈一个,长度就减一
int len=n;
//给数组赋值
for(int i=0;i<a.length;i++)
a[i]=i+1;
//i为元素下表,j代表当前要报的数
int i=0;
int j=1;
//last表示最后留下的人
int last=0;
while(len>0){
if(a[i%n]>0){
if(j%3==0){//找到要出圈的人,并把圈中人数减一
if(len==1){
last = a[i%n];
}
a[i%n]=-1;
j=1;
i++;
len--;
}else{
i++;
j++;
}
}else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
i++;
}
}
System.out.println("最后留下的是原来第"+last+"号");
}
}
展开全部
写算法,设置两个数组,一个是n个小孩,一个是visited标记数组,%3,顺着往下数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询