OJ 1478 机器翻译
描述
小晨的電腦上安裝了一個(gè)機(jī)器翻譯軟件,他經(jīng)常用這個(gè)軟件來(lái)翻譯英語(yǔ)文章。
這個(gè)翻譯軟件的原理很簡(jiǎn)單,它只是從頭到尾,依次將每個(gè)英文單詞用對(duì)應(yīng)的 中文含義來(lái)替換。對(duì)于每個(gè)英文單詞,軟件會(huì)先在內(nèi)存中查找這個(gè)單詞的中文含義,如果內(nèi)存中有,軟件就會(huì)用它進(jìn)行翻譯;如果內(nèi)存中沒(méi)有,軟件就會(huì)在外存中的 詞典內(nèi)查找,查出單詞的中文含義然后翻譯,并將這個(gè)單詞和譯義放入內(nèi)存,以備后續(xù)的查找和翻譯。
假設(shè)內(nèi)存中有M 個(gè)單元,每單元能存放一個(gè)單詞和譯義。每當(dāng)軟件將一個(gè)新單詞存入內(nèi)存前,如果當(dāng)前內(nèi)存中已存入的單詞數(shù)不超過(guò)M?1,軟件會(huì)將新單詞存入一個(gè)未使用的內(nèi)存單元;若內(nèi)存中已存入M 個(gè)單詞,軟件會(huì)清空最早進(jìn)入內(nèi)存的那個(gè)單詞,騰出單元來(lái),存放新單詞。
假設(shè)一篇英語(yǔ)文章的長(zhǎng)度為N 個(gè)單詞。給定這篇待譯文章,翻譯軟件需要去外存查找多少次詞典?假設(shè)在翻譯開(kāi)始前,內(nèi)存中沒(méi)有任何單詞。
【數(shù)據(jù)范圍】
對(duì)于10%的數(shù)據(jù)有M=1,N≤ 5。
對(duì)于100%的數(shù)據(jù)有0<M≤ 100,0<N ≤ 1000。
輸入
共2 行。每行中兩個(gè)數(shù)之間用一個(gè)空格隔開(kāi)。
第一行為兩個(gè)正整數(shù)M 和N,代表內(nèi)存容量和文章的長(zhǎng)度。
第二行為N 個(gè)非負(fù)整數(shù),按照文章的順序,每個(gè)數(shù)(大小不超過(guò)1000)代表一個(gè)英文
單詞。文章中兩個(gè)單詞是同一個(gè)單詞,當(dāng)且僅當(dāng)它們對(duì)應(yīng)的非負(fù)整數(shù)相同。
輸出
共1 行,包含一個(gè)整數(shù),為軟件需要查詞典的次數(shù)。
輸入樣例 1
3 7
1 2 1 5 4 4 1
輸出樣例 1
5
?
根據(jù)題目要求翻譯的容量是固定的那么,每次遇到新詞就要加到容器中,滿了就清除最早的,我們可以使用取余操作來(lái)實(shí)現(xiàn)清除最新的,我們可以使用數(shù)組存儲(chǔ),翻譯容器和詞組,并對(duì)翻譯容器初始化,以保證它里面沒(méi)有非負(fù)數(shù),然后進(jìn)行遞歸,每次都遞歸詞組中的一個(gè)位置,這個(gè)位置在進(jìn)入整個(gè)翻譯容器比對(duì)如果無(wú)相同則替換,計(jì)數(shù)。
#include <iostream>using namespace std; int cont,m,n; int a[1005]; int b[1005]; int findit(int x,int sit) {int i;if(x==n)return cont;for(i=0; i<m; i++){if(a[x]==b[i]){break;}}if(i==m){sit++;b[sit%m]=a[x];cont++;}x++;findit(x,sit); } int main() {while(cin>>m>>n){cont=0;fill(b,b+m,-1);for(int i=0; i<n; i++)cin>>a[i];cout<<findit(0,0)<<endl;}return 0; }
?
總結(jié)
以上是生活随笔為你收集整理的OJ 1478 机器翻译的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 不动产测绘数据入库_房产基础地理信息数据
- 下一篇: ps 究竟是 aux 还是 ef