`
957803796_1
  • 浏览: 119934 次
  • 性别: 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的人退出圈子,问最后留下的是原来第几号的人。

    看了挺多博客感觉都挺复杂的,自己写这个自认为比较简单,也更灵活,希望可以帮到需要的人,... circle.append(circle.pop(0)) #把已报数的人取出放到队尾,以此实现围成圈循环往复 num+=1 if num==m: del circle[0]

    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限制

    Hypertable与hadoop介绍

    Hypertable与hadoop介绍 文档 看完就入门

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

    随便给一个数 比如100,那么从1到100围成一个圆圈,然后就类似123123报数一样逢3就舍掉,一直这样轮询 那么最后剩下来的那个数是多少?

    c语言代码程序

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

    acm程序设计大赛题目

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

    java 经典习题.doc

    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩&gt;=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:(a&gt;b)?a:b...

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

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

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

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

Global site tag (gtag.js) - Google Analytics