zoukankan      html  css  js  c++  java
  • Java50道经典习题-程序37 报数

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

     1 import java.util.Scanner;
     2 public class Prog37{
     3     public static void main(String[] args){
     4         System.out.println("请输入排成一圈的人数:");
     5         Scanner scan=new Scanner(System.in);
     6         int n=scan.nextInt();
     7         scan.close();
     8         //定义数组变量标识某人是否还在圈内
     9         boolean[] isIn=new boolean[n];
    10         for(int i=0;i<isIn.length;i++) {//给数组赋值都为true
    11             isIn[i]=true;
    12         }
    13         //定义圈内人数、报数和索引
    14         int inCount=n;//定义圈内人数
    15         int countNum=0;//定义报数
    16         int index=0;//定义索引
    17         //去掉报数为3的人
    18         while(inCount>1) {
    19             if(isIn[index]) {
    20                 countNum++;//开始报数
    21                 if(countNum==3) {//当报数累加到3时
    22                     countNum=0;//从下一位开始将报数归于0,从1开始重新报数
    23                     isIn[index]=false;//将此时索引值对应的数改为false
    24                     inCount--;//圈内一个人改为false后,下次此人便不再进行报数,所以inCount-1
    25                 }
    26             }
    27             index++;//索引值+1进行下一次if判断
    28             if(index==n) {
    29                 index=0;
    30             }
    31         }
    32         //遍历数组中最后还是true的值,表示此人还在留在圈中
    33         for(int i=0;i<n;i++) {
    34             if(isIn[i]) {
    35                 System.out.println("最后留下的是原来第"+(i+1)+"号的那位");
    36             }
    37         }
    38     }
    39 }
    40 /*运行结果
    41 请输入排成一圈的人数:
    42 7
    43 最后留下的是原来第4号的那位
    44 */
  • 相关阅读:
    Java程序性能优化——让你的java程序更快、更稳定
    synchronized和ReentrantLock
    Java集合——ConcurrentHashMap
    SpringMVC流程
    计算机网络http,https,tcp,udp,get,post
    JVM类加载机制
    关于strcpy和memcpy
    C语言指针
    malloc函数详解
    进程和线程
  • 原文地址:https://www.cnblogs.com/parkour1026/p/10796571.html
Copyright © 2011-2022 走看看