201712-2 游戏 Java

点点圈 提交于 2020-02-27 11:38:01

思路:
第一感觉有点像约瑟夫环。想到用队列解决比较好理解

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        Queue<Integer> children = new LinkedList<Integer>();
        for(int i=1;i<=n;i++) {
            children.offer(i);
        }
        for(int j=1;children.size()!=1;j++) {
            int temp = children.poll();//每个数都出队
            if(!(j%k==0 || j%10==k)) {//如果不出局就再入队
                children.offer(temp);
            }
        }
        sc.close();
        System.out.println(children.poll());
    }

}

普通队列:
LinkedList支持队列的行为,并且实现了Queue接口,上转型为Queue。
add和offer都是将一个元素插入到队尾。offer方法不会返回null,add会返回null
peak和element在不移除的情况下返回队头。peak会返回null
poll和remove将移除并返回队头。poll会返回null

此外还有优先级队列,双端队列可以学习,了解一下。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!