A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涵門子弟 中级黑马   /  2015-12-5 00:05  /  800 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. package wzs.arithmetics;

  2. import java.util.Scanner;

  3. //题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
  4. public class Test_wzs29
  5. {
  6.     public static void main(String[] args)
  7.     {

  8.         System.out.println("请输入人数:");
  9.         Scanner input = new Scanner(System.in);
  10.         int member = input.nextInt(); // 总人数

  11.         int surplus = member; // 剩余人数
  12.         int count = 0;// 报数器
  13.         int index = 0;// 下表索引

  14.         boolean[] array = new boolean[member];// 围成的圈
  15.         for (int i = 0; i < array.length; i++)
  16.         {
  17.             array[i] = true;// true表示人还在圈内
  18.         }

  19.         // 当剩余人数大于1
  20.         while (surplus > 1)
  21.         {
  22.             if (array[index] == true)
  23.             {
  24.                 count++;
  25.                 // 数到3的人
  26.                 if (count == 3)
  27.                 {
  28.                     array[index] = false;
  29.                     surplus--;
  30.                     count = 0;
  31.                 }
  32.             }
  33.             index++;
  34.             // 当下标等于总人数
  35.             if (index == member)
  36.             {
  37.                 // 重新开始数
  38.                 index = 0;
  39.             }
  40.         }

  41.         for (int i = 0; i < array.length; i++)
  42.         {
  43.             if (array[i] == true)
  44.             {
  45.                 System.out.println("剩余的人是:" + i);
  46.             }
  47.         }
  48.     }
复制代码

1 个回复

倒序浏览
希望大家多多交流!!!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马