题目描述

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

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

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

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

输入描述:

输入共2 行。每行中两个数之间用一个空格隔开。
第一行为两个正整数M 和N,代表内存容量和文章的长度。
第二行为 N 个非负整数,按照文章的顺序,每个数(大小不超过 1000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。

输出描述:

共1 行,包含一个整数,为软件需要查词典的次数。
示例1

输入

复制

3 7
1 2 1 5 4 4 1

输出

复制

5

说明

整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:
空:内存初始状态为空。
1. 1:查找单词1 并调入内存。
2. 1 2:查找单词2 并调入内存。
3. 1 2:在内存中找到单词1。
4. 1 2 5:查找单词5 并调入内存。
5. 2 5 4:查找单词4 并调入内存替代单词1。
6. 2 5 4:在内存中找到单词4。
7. 5 4 1:查找单词1 并调入内存替代单词2。
共计查了5次词典。
#include<iostream>
using namespace std;
int main()
{
int space,n,m;
cin>>space>>n;
int num[space];
int i,j,x=;
int sum=;
int flag;
for(i=;i<space;i++) // 注意输入的数可能为0所以数组不能初始化为0
{
num[i] = -;
}
for(i=;i<n;i++)
{
flag = ;
cin>>m;
for(j=;j<space;j++)
{
if(m==num[j])
{
flag = ;
break;
}
}
if(flag==)
{
sum++;
if(space!=) // 注意space为0时无法求余
{
num[x] = m;
x = (x+)%space;
}
}
}
cout<<sum;
}

总结:

  • 用了循环数组解决
  • 两大坑:1.空间可能为0  2.输入数据可能为0所以数组不能初始化为0

最新文章

  1. LeetCode[5] 最长的回文子串
  2. KVM安装部署
  3. C/C++ 双精度double 数据相加出错缺陷解释
  4. jQuery.validator 详解二
  5. 【leetcode】Convert Sorted List to Binary Search Tree (middle)
  6. System.DateTime.Now的内容
  7. .net 获取当前周及根据年和周获取起始结束时间
  8. ubuntu配置服务器环境
  9. I.MX6 Android netperf
  10. 【50】了解new和delete的合理替换时机
  11. (转)SQL Server 2008怎样编辑200行以上的数据
  12. 用RequireJS优化Wijmo Web页面
  13. 奇葩问题:同样的字符串equal为false
  14. TypeError: &#39;NoneType&#39; object is not subscriptable
  15. bll
  16. 正向与反向拓扑排序的区别(hdu 1285 确定比赛名次和hdu 4857 逃生)
  17. SQLI DUMB SERIES-3
  18. Mysql On Mac OS: Remove &amp; Install
  19. [UE4]ue4 FString 中文乱码问题
  20. Windows下安装NTP服务器

热门文章

  1. Mybatis-generator自动生成器
  2. Entity Framework入门教程(6)--- 在线场景中保存数据
  3. 横向滚动布局 white-space:nowrap
  4. JavaLinkedHashSet练习
  5. 7、Servlet会话跟踪
  6. “字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛 1010 Count
  7. thymeleaf时间格式化
  8. 找不到或无法加载主类(Could not find or load main class)
  9. Lua中的元表与元方法
  10. 在CentOS 7上部署Ghost博客