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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chaos1234 中级黑马   /  2016-6-8 19:34  /  1329 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。
问:最后剩下的是100人中的第几个人?

2 个回复

倒序浏览
[ 本帖最后由 我是你岁哥❤环 于 2016-6-12 09:34 编辑 ]\n\n[code]<div class="blockcode"><blockquote>class Test{
        public static void main(String[] args) {

                /*
                思路:[/code]


运行效果.png (36.83 KB, 下载次数: 14)

运行效果.png

运行效果2png.png (37.12 KB, 下载次数: 15)

运行效果2png.png
回复 使用道具 举报
  1. class Test{
  2.         public static void main(String[] args) {

  3.                 /*
  4.                 思路:       
  5.                 1.定义一个boolean类型的数组,用于存储100个人是否报号14,初始状态,设置100个人未报号14为true
  6.                 2.遍历数组,当元素的值为true时,表示这个人没有报过号14,count++
  7.                 3.设置报号计数器初始值为0,每次报号count加1,每次报号到14人即count的值累加到14时,状态变为false
  8.                 4.当报号到14时,count恢复至0,重新计数,同时,每次有人报号14时,剩余的未报号的人数就减少一个人
  9.                 5.直到剩下最后一个人的时候,停止报号
  10.                 */

  11.                 //定义一个boolean类型的数组,用于存储100个人是否报号14
  12.                 boolean[] people = new boolean[100];
  13.                
  14.                 //初始状态,设置100个人未报号14为true
  15.                 for (int i=0; i<people.length; i++) {
  16.                         people[i] = true;
  17.                 }

  18.                 int num = 0;                                //num表示已经有多少人报号了14
  19.                 int count = 0;                                //定义计数器

  20.                 int[] arr = new int[people.length];                        //存储每次报14这个数的人的位置

  21.                 while (num<people.length) {
  22.                         for (int i=0; i<people.length; i++) {
  23.                                 if (people[i]) {                //如果没有报号14就计数
  24.                                         count++;
  25.                                 }
  26.                                 if (count == 14) {                //当count的值为14时,表示这个位置的人报号14了
  27.                                         people[i] = false;
  28.                                         count = 0;
  29.                                         arr[num++] = (i+1);         //将每次报14这个数的人的位置存储到一个新的数组中
  30.                                 }
  31.                         }
  32.                 }

  33.                 System.out.println("次数"+ "\t" + "100人中的第几人");
  34.                 for (int i=0; i<arr.length; i++) {
  35.                         System.out.println((i+1)+ " \t----> \t" + arr[i]);
  36.                 }
  37.                 //最后剩下的人就是最后一个报14这个数的人
  38.                 System.out.println("最后剩下的是100人中的第" + arr[arr.length-1] +"个人");
  39.         }

  40. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马