您的位置:首页 > 其它

报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数, 直到最后剩下一个孩子为止。问剩下第几个孩子。

2013-04-28 21:08 926 查看
/*	报数游戏
有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,
直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,
请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。
*/
import java.util.Vector;

public class 报数游戏 {
public static void main(String[] args) {
Vector a = new Vector();
for (int i = 1; i <= 10; i++) {
a.add("第" + i + "个孩子");
}
for (;;) {
if (a.size() == 1)
break;
for (int k = 0; k < 2; k++)
a.add(a.remove(0)); // 填空
a.remove(0);
}
System.out.println(a);
}
}
运行结果:
[第4个孩子]


package test01;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class NumberOff {
// 开始报数
public static void numberOff(List lis,int m){
while(lis.size()>1){
for(int i=0;i<m-1;i++)
lis.add(lis.remove(0));
lis.remove(0);
}
System.out.println("剩下最后一个人为:"+lis);
}
// 输入数据
public static int input(List lis){
Scanner scan = new Scanner(System.in);
System.out.print("输入人数:");
int n = scan.nextInt();	// 输入人数
System.out.print("输入报数到 m 出列(m):");
int m = scan.nextInt();	// 输入报数到 m 出列
for(int i=0;i<n;i++) lis.add(i+1);
return m;
}
public static void main(String[] args){
List lis = new ArrayList();
int m = input(lis);	// 输入数据
numberOff(lis,m);	// 开始报数
}
}
运行结果:

输入人数:10
输入报数到 m 出列(m):4
剩下最后一个人为:[5]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐