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

问题描述
机器翻译原理:碰到单词现在内存里寻找,若没有再到外存取寻找。内存中有多个单元,一个单元可以存储一个单词。假设有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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值