您的位置:首页 > 其它

【寒假任务】洛谷1540 机器翻译

2017-01-13 21:33 246 查看
问题描述

机器翻译原理:碰到单词现在内存里寻找,若没有再到外存取寻找。内存中有多个单元,一个单元可以存储一个单词。假设有m个单元,若内存中有m-1个单元被用,那么从外存中查找的单词可以存储;若m个单元都被存储,删去最先进入单元的单词,继续存储。现给出内存容量m,文章长度n,问查完一篇文章要到外存去查找几次。

输入

第一行为两个正整数M和N,代表内存容量和文章的长度。

第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。

输出

包含一个整数,为软件需要查词典的次数。

样例输入

3 7

1 2 1 5 4 4 1

样例输出

5

算法讨论

简单的模拟,考虑到范围很小,纯粹的暴力就能过。时间复杂度O(n²)。

const
maxn=1000;
var
a:array[1..maxn] of longint;
b:array[1..101] of longint;
f:array[0..maxn] of boolean;
i,j,k,s,n,m:longint;
begin
read(n,m);
for i:=1 to m do
read(a[i]);
for i:=1 to m do
begin
if f[a[i]]=false
then begin
inc(s);
inc(j);
b[j]:=a[i];
f[a[i]]:=true
end;
if j>n
then begin
f[b[1]]:=false;
for k:=2 to j do
b[k-1]:=b[k];
dec(j)
end;
end;
write(s)
end.




Pixiv ID:59781074
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  暴力 模拟