机器翻译pascal程序
題意:
把一串?dāng)?shù)放進(jìn)一個(gè)字典里,如果字典里沒有相同的數(shù),就把最先放的那一類數(shù)拿出來,把當(dāng)前的數(shù)放進(jìn)去,再統(tǒng)計(jì)一次。
分析
整個(gè)查字典過程如下:每行表示一個(gè)單詞的翻譯,冒號(hào)前為本次翻譯后的內(nèi)存狀況:
空:內(nèi)存初始狀態(tài)為空。
第一個(gè)數(shù)時(shí). 1:查找單詞1 并調(diào)入內(nèi)存。
第二個(gè)數(shù)時(shí). 1 2:查找單詞2 并調(diào)入內(nèi)存。
第三個(gè)數(shù)時(shí). 1 2:在內(nèi)存中找到單詞1。
第四個(gè)數(shù)時(shí). 1 2 5:查找單詞5 并調(diào)入內(nèi)存。
第五個(gè)數(shù)時(shí). 2 5 4:查找單詞4 并調(diào)入內(nèi)存替代單詞1。
第六個(gè)數(shù)時(shí). 2 5 4:在內(nèi)存中找到單詞4。
第七個(gè)數(shù)時(shí). 5 4 1:查找單詞1 并調(diào)入內(nèi)存替代單詞2。
共計(jì)查了5 次詞典。
var
m,n,tj,m1,i:longint;
a,t:array[0..1000]of longint;
m2:array[0..100]of longint;
procedure work;
var
i:longint;
begin
? ? for i:=1 to m-1 do
? ? m2[i]:=m2[i+1];
end;
begin
? ? readln(m,n);
? ? tj:=0;m1:=0;
? ? fillchar(t,sizeof(t),0);
? ? for i:=1 to n do
? ? begin
? ? ? ? read(a[i]);
? ? ? ? if (t[a[i]]=0)and(m1<m) then
? ? ? ? begin
? ? ? ? ? ? inc(tj);
? ? ? ? ? ? inc(m1);
? ? ? ? ? ? t[a[i]]:=1;
? ? ? ? ? ? m2[m1]:=a[i];
? ? ? ? end else
? ? ? ? if (t[a[i]]=0)and(m1=m) then
? ? ? ? begin
? ? ? ? ? ? inc(tj);
? ? ? ? ? ? t[m2[1]]:=0;
? ? ? ? ? ? work;
? ? ? ? ? ? m2[m]:=a[i];
? ? ? ? ? ? t[a[i]]:=1;
? ? ? ? end;
? ? end;
? ? write(tj);
end.
轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500228.html
總結(jié)
以上是生活随笔為你收集整理的机器翻译pascal程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oliver的救援pascal程序
- 下一篇: 笨小猴pascal题解