java例题_37 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位。

Posted scwyqin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java例题_37 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位。相关的知识,希望对你有一定的参考价值。

 1 /*37 【程序 37 报数】 
 2 题目:有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,
 3 问最后留下的是原来第几号的那位。 
 4 */
 5 
 6 /*分析1====错误分析,没有注意到要退出圈子!!!
 7  * 1、用一个数组存放n个1,从头开始报数
 8  * 2、声明一个计数器,报数为3时,数组中的数赋为0,计数器重置
 9  * 3、一直直到还剩下最后一个不为0的数,这个数的角标加1就是原来的几号
10  * 
11  * 分析2:----利用ArrayList,淘汰的人直接退出
12  * 1、存放1-n至一个表中,
13  * 2、报到3的直接淘汰(对3取余)
14  * 3、剩下一个人时,游戏结束,它自己的编号就是最开始的序号
15  * */
16 
17 
18 
19 package homework;
20 
21 import java.util.LinkedList;
22 import java.util.List;
23 import java.util.Scanner;
24 
25 public class _37 {
26 
27     public static void main(String[] args) {
28         //从键盘得到参与游戏的总人数n
29         System.out.println("请输入围圈总人数:");
30         Scanner sc= new Scanner(System.in);   //扫描仪
31         int n = sc.nextInt();   //得到n
32         sc.close();   //关闭扫描仪
33         System.out.println("最后留下的是原来的:"+game(n)+"号");
34         
35     }
36     
37     //游戏进行函数
38     public static int game(int n) {
39         int counter=3;
40          List<Integer> list = new LinkedList<>();
41             for (int i = 1; i <=n ; i++) list.add(i);//循环赋值初始位置。从1开始。
42             int index = -1; //下标从0开始 , 初始化为-1;
43             while (list.size() > 1) {
44                 index = (index + counter) % list.size(); //对总数取余。 index+key,表示每次数key(3)个数
45                 list.remove(index--);//把当前元素删除,然后下标-1.
46             }
47             return list.get(0);//返回最后一个元素原来的序号。
48         }
49     
50 
51 }

 

以上是关于java例题_37 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位。的主要内容,如果未能解决你的问题,请参考以下文章

有n个人围成一圈,顺序排号,从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是原来第几号的那位?

C++ 结构有n个人围成一圈,顺序排号。从第一个开始报数(从1到3报数),凡报到3的人退出圈子,(用结构)

有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

c语言,有n个人围成一个圈,顺序排号,从第一个开始报数(1到3),凡报到3的退出圈子问最后留下的人

JAVA围圈报数 问题

C语言 n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,计算最后留下的是最初第几号人