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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。 然后其他人重新开始,从1报数,到14退出。
   问:最后剩下的是100人中的第几个人?
以下为代码实现:
关键代码请同学们回复后观看

// 创建集合存储100个人
ArrayList<Integer> al = new ArrayList<Integer>();
//循环赋值      
    for (int i = 1; i < 101; i++) {
                                al.add(i);
                    }
//定义一个计数变量
    int count = 0,;

游客,如果您要查看本帖隐藏内容请回复

33 个回复

正序浏览
我的天哪,回复还要十个字么?看看
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
首先要看的就是重新报数是从第一个人还是去掉的那个人。。。
回复 使用道具 举报
想看看先
回复 使用道具 举报
这个其他人说的很模糊
回复 使用道具 举报
赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞
回复 使用道具 举报
小白来看大神编码.
回复 使用道具 举报
package com.heima;

import java.util.ArrayList;

public class ClassTest {
        public static void main(String[] args) {
                ArrayList c = new ArrayList();
                ArrayList c1 = new ArrayList();
                for (int i = 0; i <100; i++) {
                        c.add(i);
                }
                int original = 0;
                while (c.size() >= 14) {
                        int t = 0;
                        for (int i = original; i < c.size() + original; i++) {
                                if (i % 14 == 13) {
                                        c1.add(c.get(i - original));
                                        t++;
                                }
                        }
                        original = (c.size() + original) % 14;
                        c.removeAll(c1);
                }
        System.out.println(c);

        }
}
回复 使用道具 举报
坐等风云看起时..........
回复 使用道具 举报
答案是  15
28
35
38
46
54
71
73
74
79
89
90
91
回复 使用道具 举报
ljd 中级黑马 2016-5-29 22:50:16
26#
兄弟,你这段代码貌似每次都是从0报数的啊
回复 使用道具 举报
看看楼主写的咋样
回复 使用道具 举报
一个圈...回复看答案
回复 使用道具 举报
最后输出来的就是这个人一开始在100个人当中的序号.从 0开始;;
回复 使用道具 举报
package com.heima;

public class ClassTest {
        public static void main(String[] args) {
                int[] a = new int[100];
                for (int i = 0; i < a.length; i++) {
                        a[i] = i;
                }
                int original = 0;
                while (a.length >= 14) {
                        int t = 0;
                        for (int i = original; i < a.length + original; i++) {
                                if (i % 14 == 13) {
                                        a[i - original] = -1;
                                        t++;
                                }
                        }
                        original = (a.length + original) % 14;
                        int[] a1 = new int[a.length - t];
                        for (int i = 0, k = 0; i < a.length; i++) {
                                if (a[i] == -1) {
                                        continue;
                                }
                                a1[k++] = a[i];
                        }
                        a = a1;
                }

                for (int i = 0; i < a.length; i++) {
                        System.out.println(a[i] + " ");
                }

        }
}
回复 使用道具 举报
GAREN 中级黑马 2016-5-29 21:18:24
21#
看看隐藏部分是啥
回复 使用道具 举报
ljd 中级黑马 2016-5-29 20:28:02
20#
这个还真不会,开开眼界
回复 使用道具 举报
没看懂题目的意思。。。。
回复 使用道具 举报
顶顶顶顶
回复 使用道具 举报
感觉这道理出的有歧义啊,“其他人重新开始”,其他人包不包括前13个?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马