模拟——机器翻译
程序员文章站
2023-12-27 15:51:58
...
呜呜,简直痛哭流涕,第一次发现Java带给我的无限的快乐,Java的很多已经写好的类还是比较好用的,重要的是我们怎么去理解和使用它,每天的一点点进步是漫长且充满着幸福的。
AC这题目的关键是学会构造一个阻塞队列,,如下
ArrayBlockingQueue<Integer> Q = new ArrayBlockingQueue<>(capa);
不多说,代码如下,希望可以解锁更多知识盲点。
/*
* 日期:2020.02.26
* 作者:城主
* 题目:洛古普及题-机器翻译
* 思路:创建一个队列,全都赋值为0,遇到单词查询一次在
* 内存中是否有这个单词,如果有,继续下一个,如
* 果没有,查询次数加一,将该单词添加到队尾,如
* 果,这两一个很重要的原则是“先进先出”准则。
*/
import java.util.Scanner;
//import java.util.PriorityQueue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.AbstractQueue;
import java.util.Collection;
import java.util.PriorityQueue;
import java.util.Random;
public class Test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
//input
int capa=scan.nextInt();//capacity of
ArrayBlockingQueue<Integer> Q = new ArrayBlockingQueue<>(capa);
// PriorityQueue<Integer> Q = new PriorityQueue<>(capa);
int ar_le=scan.nextInt();
//input word and deal with
int search_num=0;
for(int i=1;i<=ar_le;i++)
{
int word=scan.nextInt();//
if(Q.contains(word))continue;
else
{
//if(i%capa==0)
if(Q.size()==capa)
{
Q.poll();
}
Q.add(word);
search_num++;
}
}
System.out.println(search_num);
}
}