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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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


我得出的答案是93,对吗
==================================
  1. package com.heima.test_kaoshi;

  2. import java.util.ArrayList;

  3. public class Test13 {

  4.         /**
  5.          *
  6.                 10、 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
  7.                                 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
  8.                                
  9.                 ---------------------------------------------------------------
  10.                 分析:
  11.                 创建集合,存储1-100编号
  12.                 定义count  用来计数
  13.                 如果集合的长度不为1,就一直循环删除
  14.                 而且指针等于集合长度,就将指针清零
  15.                 计数器叠加,加至14时,清零
  16.          */
  17.         public static void main(String[] args) {
  18.                 ArrayList<Integer> list = new ArrayList<>();
  19.                 for(int i = 1;i<= 100;i++){
  20.                         list.add(i);
  21.                 }
  22.                
  23.                 int count = 0;
  24.                 for(int i = 0;list.size()!=1;i++){
  25.                         if(i == list.size()){
  26.                                 i=0;
  27.                         }
  28.                         if(count==14){
  29.                                 list.remove(i--);
  30.                                 count=0;
  31.                         }
  32.                         count++;
  33.                 }
  34.                 System.out.println("最后剩下的是第"+list.get(0)+"号");
  35.         }

  36. }
复制代码

2 个回复

正序浏览
约瑟夫环.我的答案和楼主一样,让人退出的操作也可以这样:
                        if(count % 14 == 0) {
                                list.remove(i--);
                        }
                        count++;
回复 使用道具 举报
上述代码中,26行,有错,更正为int count=1;结果是92
代码:
  1. public static void main(String[] args) {
  2.                 ArrayList<Integer> list = new ArrayList<>();
  3.                 for(int i = 1;i<= 100;i++){
  4.                         list.add(i);
  5.                 }
  6.                
  7.                 int count = 1;
  8.                 for(int i = 0;list.size()!=1;i++){
  9.                         if(i == list.size()){
  10.                                 i=0;
  11.                         }
  12.                         if(count==14){
  13.                                 list.remove(i--);
  14.                                 count=0;
  15.                         }
  16.                         count++;
  17.                 }
  18.                 System.out.println("最后剩下的是第"+list.get(0)+"号");
  19.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马