/* 报数游戏 有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]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45621.html