机器翻译(函数)
描述
小晨的電腦上安裝了一個(gè)機(jī)器翻譯軟件,他經(jīng)常用這個(gè)軟件來翻譯英語文章。
這個(gè)翻譯軟件的原理很簡單,它只是從頭到尾,依次將每個(gè)英文單詞用對應(yīng)的中文含義來替換。對于每個(gè)英文單詞,軟件會(huì)先在內(nèi)存中查找這個(gè)單詞的中文含義,如果內(nèi)存中有,軟件就會(huì)用它進(jìn)行翻譯;如果內(nèi)存中沒有,軟件就會(huì)在外存中的詞典內(nèi)查找,查出單詞的中文含義然后翻譯,并將這個(gè)單詞和譯義放入內(nèi)存,以備后續(xù)的查找和翻譯。
假設(shè)內(nèi)存中有M個(gè)單元,每單元能存放一個(gè)單詞和譯義。每當(dāng)軟件將一個(gè)新單詞存入內(nèi)存前,如果當(dāng)前內(nèi)存中已存入的單詞數(shù)不超過M?1,軟件會(huì)將新單詞存入一個(gè)未使用的內(nèi)存單元;若內(nèi)存中已存入M 個(gè)單詞,軟件會(huì)清空最早進(jìn)入內(nèi)存的那個(gè)單詞,騰出單元來,存放新單詞。 ????
假設(shè)一篇英語文章的長度為N個(gè)單詞。給定這篇待譯文章,翻譯軟件需要去外存查找多少次詞典?假設(shè)在翻譯開始前,內(nèi)存中沒有任何單詞。
格式
輸入格式
共2行。每行中兩個(gè)數(shù)之間用一個(gè)空格隔開。第一行為兩個(gè)正整數(shù)M和N,代表內(nèi)存容量和文章的長度。第二行為N個(gè)非負(fù)整數(shù),按照文章的順序,每個(gè)數(shù)(大小不超過1000)代表一個(gè)英文單詞。文章中兩個(gè)單詞是同一個(gè)單詞,當(dāng)且僅當(dāng)它們對應(yīng)的非負(fù)整數(shù)相同。
輸出格式
共1行,包含一個(gè)整數(shù),為軟件需要查詞典的次數(shù)。
樣例
輸入樣例
3 7 1 2 1 5 4 4 1輸出樣例
5限制
時(shí)間限制: 1000 ms
內(nèi)存限制: 65536 KB
思路:有點(diǎn)隊(duì)列的意思,先進(jìn)先出,后進(jìn)后出,但相同的不能進(jìn)
注意:0是非負(fù)整數(shù)
#include <iostream> #include <math.h> #include <string.h> using namespace std;int find (int x, int a[], int leng){for (int i=0; i<leng; i++) {if (a[i] == x) {return 1;}}return 0; } int main () {int m, n, ans=0, tmp, j=0;scanf ("%d %d", &m, &n);int a[m];memset(a, -1, sizeof(a));for (int i=0; i<n; i++) {scanf ("%d", &tmp);if (find(tmp, a, m)) {continue;} else{if (j == m) {for (int k=0; k<m; k++) {if (k != m-1)a[k] = a[k+1];}j--;}a[j] = tmp; j++;ans++;}}printf ("%d", ans);return 0; }?
總結(jié)
- 上一篇: SPI 转 CAN 接口
- 下一篇: A*,那个传说中的算法