1540 机器翻译

难度:普及-(普及)

题目类型:数据结构

提交次数:1

涉及知识:队列

题目背景

小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。

题目描述

这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。

假设内存中有M个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M-1,软件会将新单词存入一个未使用的内存单元;若内存中已存入M个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。

假设一篇英语文章的长度为N个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。

代码:

#include<deque>#include<iostream>#include<cstring>using namespace std;int main(){int m, n, num;int ans = 0;cin>>m>>n;

deque<int>q;int visited[1000];memset(visited, 0, sizeof(visited));for(int i = 0; i < n; i++){cin>>num;if(q.empty()||(q.size()<m&&!visited[num])){q.push_back(num);ans++;visited[num]++;}else if(q.size()>=m&&!visited[num]){visited[q.front()] = 0;q.pop_front();q.push_back(num);visited[num]++;ans++;}}cout<<ans<<endl;return 0;}

备注:

支持a[i]\a.erase\a.insert的数据类型有:vector\deque(双端队列)\list

deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数:

另外要注意一点。对于deque和vector来说,尽量少用erase(pos)和erase(beg,end)。因为这在中间删除数据后会导致后面的数据向前移动,从而使效率低下。

转载于:https://www.cnblogs.com/fangziyuan/p/5780515.html

关卡2-1 简单的模拟 1540 机器翻译相关推荐

  1. easy-mock写的一个简单的模拟二页的反馈

    用easy-mock写的一个简单的模拟二页的反馈,因为后端团队比较传统,所以设计的结构不太规范. 功能:每页10条,共2页,共12条记录,超出参数范围会返错误码: easy模板: {code: fun ...

  2. 1132 Cut Integer (20 分)【难度: 简单 / 知识点: 模拟】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805347145859072 就是简单的模拟即可. #include< ...

  3. 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】

    13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...

  4. C++动态数组简单的模拟二元堆

    //C++动态数组简单的模拟二元堆 #include<iostream>using namespace std;class BinaryHeap { private:int cap; // ...

  5. 每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,注意求余的技巧!...

    1894.找到需要补充粉笔的学生编号 https://leetcode-cn.com/problems/find-the-student-that-will-replace-the-chalk/ 难度 ...

  6. Lab01: Logisim简单数字电路模拟实验

                              Lab01: Logisim简单数字电路模拟实验 一.实验目的: (1)理解计算机硬件如何表示.存储和控制数据: (2)解决复杂系统或问题时使用抽象 ...

  7. 即学即会---简单易学模拟时钟 (html +css +js)

    简单易学模拟时钟(基于html,css,js) 有黑夜和白天两种效果,可自行切换. 当然你也可以点击这里看看效果demo效果

  8. 7王523(炒鸡简单的模拟题哦哦哦)

    描述 你玩过7王523吗? 这个扑克牌游戏可以2~5个人玩,最开始的时候,每人5张牌,庄家6张牌.庄家首先出牌,然后轮流出牌或不出牌. 第一个出牌的人可以打出任意牌,后面的人必须比前面的牌大才能出牌, ...

  9. c语言写自动填写表单提交,利用C语言实现POST数据包如此简单【模拟网页提交表单】...

    http://www.maben.com.cn/archives/212.html 利用C语言实现POST数据包如此简单[模拟网页提交表单] //*************************** ...

最新文章

  1. 复习02统计学习方法(感知机perceptron machine)---图片版
  2. OpneCV3——使用SURF、SVM、BOW对图像进行分类
  3. 知乎进化:对抗内容“熵增”胜算几何?
  4. 网易云信入选杭州市优质产品推荐目录!
  5. 打家劫舍—leetcode198
  6. 客户端负载均衡?? 服务端负载均衡??
  7. 大学生如何转专业(自学/培训)到互联网行业
  8. 重新ICP,在没有Matlab的日子里
  9. 谷歌浏览器安装Postman插件 亲测有效!!!
  10. linux下的5个查找命令
  11. 【bzoj 1102】[POI2007]山峰和山谷Grz(BFS)
  12. 查询工资最低的3名员工的职工工号、姓名和收入_2018年31省最低工资排名!武汉工资低于这个数就违法!...
  13. JavaScript实现按钮点击上/下一张切换图片
  14. 拜腾“难”飞:全球化饮鸩止渴?
  15. 用VB制作自己的IE网页浏览器
  16. 深圳市社会医疗保险门诊大病管理办法
  17. cad lisp 二次抛物线_用Cad画二次抛物线
  18. 浅析jQuery删除节点的三个方法
  19. Citrix云桌面最小环境搭建
  20. 笨鸟Linux学习连载之 - 万事开头难

热门文章

  1. 计算机视觉与深度学习,看这本书就够了
  2. java rsa数字签名_RSA 数字签名算法(Java版)
  3. html 未来元素绑定事件,jquery on如何给未来元素绑定事件?
  4. 华中科技大学c语言作业测评,华中科技大学C语言实验报告.docx
  5. python中哪个函数能生成集合_神奇的python系列11:函数之生成器,列表推导式
  6. named 客户端无法解析_Outlook邮件附件无法直接打开?用这个办法轻松解决
  7. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识
  8. JavaScript 知识图谱
  9. 用ftp、http搭建网络yum源
  10. python中da_python学习 da4