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 */
  • 相关阅读:
    PHPStrom 转 VSCode 折腾记录
    vscode php 代码提示 自动完成
    Elasticsearch中文分词加拼音
    AutoMapper用法
    删除所有退出状态的容器
    Linux 安装Docker
    千里眼的修练方法--末法时代即将结束
    Visual NMP
    c#通过反射获取类上的自定义特性
    微信小程序学习笔记
  • 原文地址:https://www.cnblogs.com/parkour1026/p/10796571.html
Copyright © 2011-2022 走看看