關卡2 1 簡單的模擬 1540 機器翻譯

2022-08-01 07:33:13 字數 1260 閱讀 5906

1540 機器翻譯

難度:普及-

(普及)

題目型別:資料結構

提交次數:1

涉及知識:佇列

小晨的電腦上安裝了乙個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。

這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對於每個英文單詞,軟體會先在記憶體中查詢這個單詞的中文含義,如果記憶體中有,軟體就會用它進行翻譯;如果記憶體中沒有,軟體就會在外存中的詞典內查詢,查出單詞的中文含義然後翻譯,並將這個單詞和譯義放入記憶體,以備後續的查詢和翻譯。

假設記憶體中有m

個單元,每單元能存放乙個單詞和譯義。每當軟體將乙個新單詞存入記憶體前,如果當前記憶體中已存入的單詞數不超過

m-1,軟體會將新單詞存入乙個未使用的記憶體單元;若記憶體中已存入

m個單詞,軟體會清空最早進入記憶體的那個單詞,騰出單元來,存放新單詞。

假設一篇英語文章的長度為n

個單詞。給定這篇待譯文章,翻譯軟體需要去外存查詢多少次詞典?假設在翻譯開始前,記憶體中沒有任何單詞。

**:

#include

#include

#include

using

namespace

std;

intmain()

else

if(q.size()>=m&&!visited[num])

}cout

return0;

}

備註:

支援a[i]\a.erase\a.insert的資料型別有:vector\deque(雙端佇列

)\list

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,

deque

在介面上和

vector

非常相似,下面列出

deque

的常用成員函式:

另外要注意一點。對於deque

和vector

來說,盡量少用

erase(pos)

和erase(beg,end)

。因為這在中間刪除資料後會導致後面的資料向前移動,從而使效率低下。

試練場 簡單的模擬 P1540 機器翻譯

p1540 機器翻譯 題目背景 小晨的電腦上安裝了乙個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。題目描述 這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對於每個英文單詞,軟體會先在記憶體中查詢這個單詞的中文含義,如果記憶體中有,軟體就會用它進行翻譯 如果記憶...

簡單模擬練習1 3 P1540 機器翻譯

小晨的電腦上安裝了乙個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對於每個英文單詞,軟體會先在記憶體中查詢這個單詞的中文含義,如果記憶體中有,軟體就會用它進行翻譯 如果記憶體中沒有,軟體就會在外存中的詞典內查詢,查...

模擬 P1540 機器翻譯

題目連線 小晨的電腦上安裝了乙個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對於每個英文單詞,軟體會先在記憶體中查詢這個單詞的中文含義,如果記憶體中有,軟體就會用它進行翻譯 如果記憶體中沒有,軟體就會在外存中的詞典...