`
957803796_1
  • 浏览: 124045 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多
/*
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 */
/*复制的代码*/
import java.util.Scanner;
public class Test37{
public static void main(String[] args) {
   Scanner s = new Scanner(System.in);
   System.out.print("请输入总人数:");
   int n = s.nextInt();
 
   boolean[] arr = new boolean[n];
   for(int i=0; i<arr.length; i++) {
    arr[i] = true;//下标为TRUE时说明还在圈里
   }
 
   int leftCount = n; //圈中剩下的人数
   int countNum = 0;
   int index = 0;
 
   while(leftCount > 1) {
    if(arr[index] == true) {//当在圈里时
     countNum ++; //报数递加
     if(countNum == 3) {//报道3时
      countNum =0;//从零开始继续报数
      arr[index] = false;//此人退出圈子
      leftCount --;//剩余人数减一
     }
    }
    index ++;//每报一次数,下标加一
  
    if(index == n) {//是循环数数,当下标大于n时,说明已经数了一圈,
     index = 0;//将下标设为零重新开始。
    }
   }
   System.out.print("最后剩下的是:");
   for(int i=0; i<n; i++) {
    if(arr[i] == true) {
     System.out.println(i+1);
    }
   }
}
}
2
2
分享到:
评论

相关推荐

    python 有n个人围成一圈,顺序排号,问最后留下的是原来第几号的那位。(示例)

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

    python 实现报数 示例

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

    Python使用列表完成程序的编写:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡是报到m的人退出圈子,问最后留下的是原来第几号的人。

    这个问题要求我们模拟一个游戏,其中n个人围成一个圈,从第一个人开始按照1到m的顺序报数,每报到m的人就退出圈子,直到只剩一个人为止。我们要找出最后留在圈子里的人原来的编号。 在Python中,我们可以使用列表来...

    N个人围圈数数的Java算法

    N个人围圈数数的Java算法,比较有规律性的算法

    Java数学算法:报3退出算法.rar

    Java数学算法:报3退出算法,具体是:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 index ;//每报一次数,下标加一  if(index == n) {//...

    python 10个人循环报数到3排除

    针对现在经典问题10个人循环报数问题编写的python实现,循环中的100次循环其实可以改为使用while实现,那个比for循环好一点。同样的可以将10个人改为任意的人数,只要不超过int限制

    一个报数游戏js版(约瑟夫环问题)

    报数游戏,也被称作约瑟夫环问题,是一个著名的数学问题,它描述的是一种模拟的报数游戏,即一群人围成一圈,从某个人开始报数,每数到第三个数就出局,然后从下一个人继续报数,直到剩下最后一个人。这个游戏在编程...

    c语言代码程序

    打印出杨辉三角形 学习putpixel画点 画椭圆ellipse 利用ellipse and rectangle利用...从第一个人开始报数(从1到3报数),凡报到3的人退出 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度

    c语言编程比赛的题目及答案

    问题描述:有M个人围成一圈,顺序排号,从第一个人开始顺序报数(从1到N),凡报到N的退出圈子。退出者的下一个人又从1开始报数,直到圈子里只剩下最后一个人。请你编写一个程序找出最后一个留在圈子里的人原来的...

    c语言指针编程练习题.pdf

    5. 有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 这道题目考察了读者的逻辑思维能力和循环操作能力。通过使用循环和if语句,读者可以模拟出圈子的过程...

    各种c++经典例题,多种编程语言

    题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出  圈子,问最后留下的是原来第几号的那位。 【程序31】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当...

    java50道经典练习题.docx

    有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的哪个人。 **知识点解析:** - **约瑟夫环问题**:经典的算法问题。 - **循环结构**:使用循环结构模拟报...

    c++编程小题目

    有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 **源代码解析:** ```cpp #include using namespace std; const int M = 3; void main()...

    最新JAVA编程题全集_50题及答案

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { ...

    应届毕业生笔试题(软件)

    从第一个人开始报数(从 1 到 3 报数), 凡报到 3 的人退出圈子, 问最后留下的是原来的第几号的那位? **知识点**: 约瑟夫环问题。 - **详细解析**: 这是一个经典的约瑟夫环问题。解决这类问题的一种常见方法是使用...

Global site tag (gtag.js) - Google Analytics