标签:假设 需要 容量 mis with 软件 出错 its class
#include <bits/stdc++.h> using namespace std; int a[2000]; int main(){ //freopen("translate.in","r",stdin); //freopen("translate.out","w",stdout); ios::sync_with_stdio(false); int m,n,k,cnt=0,head=1,tail=0,flag=0,ans=0,s=0; cin>>m>>n; for(int i=1;i<=n;i++){ flag=0; cin>>k; for(int j=head;j<=tail;j++){ if(a[j]==k){ flag=1; } } if(flag==0){ //if(i==10)cout<<cnt<<" "<<head<<endl; bool jud=0; if(cnt==m){ cnt-=1; head++; tail++; a[tail]=k; jud=1; } //cautious:pre.judge the boundary to avoid making a mistake that update again if(cnt<m and jud==0){ tail++; a[tail]=k; cnt++; if(cnt==m and head!=1) head++; } ans++; 出现问题:对于一个周期的过程没有想清楚细节,当cnt-1时head+1当时没考虑,所以要在脑子中带有细节地简单模拟 //if(i==10) cout<<head<<" "<<a[head]<<" "<<a[tail]<<" "<<cnt<<endl; //if(i==11) cout<<head<<" "<<a[head]<<" "<<a[tail]<<" "<<cnt<<endl; //for(int x=head;x<=tail;x++) cout<<a[x]<<" "; //cout<<endl; } } cout<<ans; //cautious:to those parts you don‘t have a good command of please build some datas to have a try //this time you make a mistake }
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语
文章。
题目描述
这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用
对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这
个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存
中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻
译,并将这个单词和译义放入内存,以备后续的查找和翻译。
假设内存中有 MM 个单元,每单元能存放一个单词和译义。每当软件将
一个新单词存入内存前,如果当前内存中已存入的单词数不超过 M-1M?1
,软件会将新单词存入一个未使用的内存单元;若内存中已存入 MM 个
单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词
。
假设一篇英语文章的长度为 NN 个单词。给定这篇待译文章,翻译软件
需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词
。
输入输出格式
输入格式:
共 22 行。每行中两个数之间用一个空格隔开。
第一行为两个正整数 M,NM,N ,代表内存容量和文章的长度。
第二行为 NN 个非负整数,按照文章的顺序,每个数(大小不超过
10001000 )代表一个英文单词。文章中两个单词是同一个单词,当且仅
当它们对应的非负整数相同。
输出格式:
一个整数,为软件需要查词典的次数。
输入输出样例
输入样例#1: 复制
3 7
1 2 1 5 4 4 1
输出样例#1: 复制
5
标签:假设 需要 容量 mis with 软件 出错 its class
原文地址:https://www.cnblogs.com/79707536wc/p/9310747.html