计三减一游戏

来源:互联网 发布:淘宝可以延长几天收货 编辑:程序博客网 时间:2024/06/07 21:56

游戏:计三减一

游戏要求:500名学生玩一个游戏,他们互相手牵着手围成一个圈,并在身后标号码1-500,从第一个人开始计数,如果遇到三或三的倍数,那么这个人退出这个圈,下一个人继续牵着手。问:最后一个剩下来的这个人身后的号码为多少?
算法实现:声明一个布尔型数组,数组长度为500,初始值全部为true。声明两个计数器:Countnum:用于判断是否为三的倍数,index:用于数组内自增,一个int变量:leftnum储存留下来的人数。从第一个人开始计数,如果为true,Countnum自增,如果Countnum等于3,计数器Countnum归零,并且改变这个人在数组中布尔型的值:a[index] = false,剩下来的人数减一:leftnum--。计数器index自增,循环往复。
部分算法流程图如图一:


图一
具体代码如下:
public class Count3Quit {


public static void main(String[] args) {
boolean []a = new boolean[500];
for(int i = 0; i<a.length; i++){
a[i] = true;
}
int leftNum = a.length;
int Countnum = 0;
int index = 0;

while(leftNum > 1){
if(a[index] == true){
Countnum ++;
if(Countnum ==3){
Countnum = 0;
a[index] = false;
leftNum --;
}
}
index ++;

if(index == a.length)
index =0;
}
for(int i = 0; i<a.length; i++){
if(a[i] == true)
System.out.println(i);
}


}
运行结果:435
也就是身后号码布为436的人最后剩下了,数组从零开始。