计三减一游戏
来源:互联网 发布:淘宝可以延长几天收货 编辑:程序博客网 时间: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);
}
}
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的人最后剩下了,数组从零开始。
阅读全文
1 0
- 计三减一游戏
- 游戏
- 游戏
- 游戏
- 游戏
- 游戏...
- 游戏
- 游戏
- 游戏
- 游戏
- 游戏
- #游戏
- 游戏
- 游戏
- 游戏
- 游戏
- 游戏
- 游戏
- 原型模式
- ITON
- 条形码和二维码的原理简介
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛-题目9 : Minimum-(线段树)
- 便(then) (并查集)
- 计三减一游戏
- A星寻路算法C++实现
- Dijkstra算法求单源最短路径
- 2017.9.23 考试题一:回形遍历
- [agc013d]Piling Up
- PAT 甲级 1028. List Sorting (25)
- Redis汉明重量 bitcount
- Android之数据库ContentProvider
- 【dubbo】直连提供者+只订阅