报数剔除问题

问题:15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问:哪只猴子会成为大

import java.util.LinkedList;

public class exercise03 {
    public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<>();
        for (int i = 1; i <= 15; ++i) {
            list.add(i);
        }
        getQue(list, 0, 7);
        System.out.println(list.get(0));
    }

    /**
     * 推出了一个公式...
     * 递归地处理,当然可以递归就肯定可以非递归
     * @param list 要处理的链表
     * @param begin 从哪个索引开始
     * @param count 报数剔除
     */
    public static void getQue(LinkedList<Integer> list, int begin, int count) {
        int index = begin;
        while (list.size() != 1) {
            // 查找出要剔除的元素
            index = (index + count - 1) % list.size();
            list.remove(index);
            // 打印出来看看...
            System.out.println(list);
            getQue(list, index, count);
        }
    }
}

发布了23 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/TanJiaLiang_/article/details/102924076