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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

33黑马币
你们做的 答案是几啊 有代码 最好 :lol   在线等、、、

最佳答案

查看完整内容

public static void main(String[] args) { int p = 100; /**** 初始化人员 ***/ boolean[] per = new boolean;// boolean数组表示站成一圈的人,false表示退出 for (int i = 0; i < per.length; i++) { per = true; } /**** 报号 ***/ int t = 0, len = per.length; while (len > 1) { for (int i = 0; i < per.length; i++) { ...

6 个回复

倒序浏览
public static void main(String[] args) {
        int p = 100;

        /**** 初始化人员 ***/
        boolean[] per = new boolean[p];// boolean数组表示站成一圈的人,false表示退出
        for (int i = 0; i < per.length; i++) {
            per[i] = true;
        }

        /**** 报号 ***/
        int t = 0, len = per.length;
        while (len > 1) {
            for (int i = 0; i < per.length; i++) {

                if (per[i]) {
                    t++;
                    if (t == 14) {
                        t = 0;
                        per[i] = false;
                        len--;
                    }
                }
            }
        }
        /***** 结果 *****/
        System.out.println("最后的情况:" + Arrays.toString(per));
        for (int i = 0; i < per.length; i++) {
            if (per[i]) {
                System.out.println("原来喊的数:" + (i + 1) % 14);
            }
        }

        }


我的答案 忘采纳  谢谢 最后结果  8
回复 使用道具 举报
public class TreeSetDemo {
        public static void main(String[] args) {
                TreeSet<Student> set=new TreeSet<Student>();
                for(int x=1;x<101;x++) {
                        set.add(new Student(x));
                }
                System.out.println(set.size());
                int count=1;//定义一个计数器,
                /*只要集合内还有一个以上的元素,便对集合进行遍历,遍历是计数器自增,每当计数器自增到了14的时候,就
                 * 将遍历到的那个元素从集合中删除,并将计数器清零,直到集合中的元素为一的时候,跳出循环。
                 * */
                while(set.size()!=1) {
                        Iterator <Student>it=set.iterator();
                        while(it.hasNext()) {
                                if(count==14) {
                                        it.next();//
                                        it.remove();
                                        count=1;
                                        continue;
                                }
                                it.next();
                                count++;
                        }
                }
                System.out.println(set);
        }
}
class Student implements Comparable<Student> {
        public int id;
        Student(int id) {
                this.id=id;
        }
        public int compareTo(Student s) {
                return new Integer(this.id).compareTo(new Integer(s.id));
        }
        @Override
        public String toString() {
                return id+"";
        }
}
最后结果是92
回复 使用道具 举报
package com.itheima;  
  
import java.util.ArrayList;  
import java.util.List;  
  
/*
* 10、 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
*/  
public class Test10 {  
    public static void main(String[] args) {  
        Circle c = new Circle();  
        c.exits2();  
         
    }  
}  
  
class Circle{  
    private List<Integer> queue = new ArrayList<Integer>();  //队列  
      
    private int maxIndex = 0;  //最大索引值  
    private int currentIndex = 0; //当前索引值  
      
      
      
    //第一种方法  
    public void exit()  
    {  
        //生成队列  
        for(int i=1; i<=100; i++)  
        {  
            queue.add(i);  
        }  
         
         
        maxIndex = queue.size() - 1;  
         
        while(queue.size() > 1)  
        {  
              
            for(int j=1; j<=14; j++)  
            {  
                //如果当前索引大于了最大索引,说明已经数到最后一个号,重新数  
                if(currentIndex > maxIndex)  
                {  
                    currentIndex = 0;  
                }  
                  
                System.out.println("第" + queue.get(currentIndex) + "号,数" + j);  
                if(j==14)  
                {  
                    System.out.println("第" + queue.remove(currentIndex) + "号退出");   //去除当前索引的值,将队列的后面的值都提前一个索引  
                    System.out.println("当前存在的号为:" + queue);  
                    maxIndex--;        //最大索引减一,currentIndex当前索引不变,即将队列后面一个号,作为当前的索引值  
                }  
                else  
                {  
                    currentIndex++;   //每循环一次,当前的索引就会加一,跳到队列中的下个数  
                }  
                  
                  
            }  
              
        }  
         
    }  
      
      
      
      
    //第二种方法  
    public void exits2()  
    {  
         
        boolean[] queue = new boolean[100];  
        for(int i=0;i<queue.length;i++)  
        {  
            queue[i] = true;  
        }  
         
         
        int len = queue.length;  
         
        int count = 0;  
        while(len>1)  
        {  
              
            for(int i=0;i<queue.length;i++)  
            {  
                if(queue[i]==true)  
                {  
                    count++;  
                    if(count == 14)  
                    {  
                        queue[i] = false;  
                        count=0;  
                          
                        len--;  
                    }  
                }  
            }  
              
         
              
              
        }  
         
         
        for(int i=0;i<queue.length;i++)  
        {  
            System.out.println(i + " : " + queue[i]);  
        }  
    }  
}  
回复 使用道具 举报
恩,受教了。
回复 使用道具 举报
楼主在不,他们的方法你看啦吗,为什么结果不一样,不应该吧,我看啦看,应该是2吧
回复 使用道具 举报
先mark一下,来看看。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马