#5342:


jkljk6 (钱猪肉)

學校 : 上海市娄山中学
編號 : 18746
來源 : [180.158.73.157]
最後登入時間 :
2016-06-27 22:40:08
d139. Compressed String -- 章魚教學網站-97學年度程設馬拉松賽 | From: [180.158.89.31] | 發表日期 : 2011-07-12 16:19

var i,j,k,l,b,x,y,max:longint;
a:ansistring;
begin
while not eof do begin
readln(a);
i:=length(a);
j:=0;
repeat
inc(j);
max:=0;
if (a[j]<>a[j+1]) or (a[j]<>a[j+2]) then write(a[j]);
if (a[j]=a[j+1]) and (a[j]=a[j+2]) then begin
j:=j+3;max:=3;
repeat
if a[j]=a[j-1] then begin inc(j);inc(max);end;
until a[j]<>a[j-1];
write(max,a[j-1]);
j:=j-1;
end;
until j>=i;
writeln;
end;
end. 
#5344: Re:123


grd (保持好奇心)

學校 : 臺中市私立明道高級中學
編號 : 18826
來源 : [140.113.207.250]
最後登入時間 :
2019-01-21 21:20:44
d139. Compressed String -- 章魚教學網站-97學年度程設馬拉松賽 | From: [69.22.186.254] | 發表日期 : 2011-07-12 22:48

if (a[j]<>a[j+1]) or (a[j]<>a[j+2]) then write(a[j]);
if (a[j]=a[j+1]) and (a[j]=a[j+2]) then begin

這句出問題了

a='abc'

到c的時候 ,因為不能比對 a[j+2]自然就會出現 error201 (範圍錯誤)

我是用一個temp當做第一個比對的,time=0

如果第一個是的話就inc(time)

當字元不是的時候,看time<2就不要變動,>2的話就輸出數字和字元

並且把time歸一,temp換人

這樣就可以輸出正解了(不過最後要插個空白,要不然最後的跳不了)

 

 
ZeroJudge Forum