Array130. Дан целочисленный массив размера $$N$$. Преобразовать массив, увеличив все его серии наибольшей длины на один элемент.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
program Array130; var a,CountSeries,temp : array [1..20] of real; LengthSeries : array [1..20] of integer; N,i,i2,i3,NumSeries,MaxLengthSeries: integer; begin Write('N: '); Readln(N); Writeln('A: '); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; NumSeries:=1; LengthSeries[NumSeries]:=1; MaxLengthSeries:=NumSeries; CountSeries[NumSeries]:=a[1]; for i:=2 to N do begin if a[i-1]=a[i] then LengthSeries[NumSeries]:=LengthSeries[NumSeries]+1 else begin if LengthSeries[NumSeries]>LengthSeries[MaxLengthSeries] then MaxLengthSeries:=NumSeries; inc(NumSeries); LengthSeries[NumSeries]:=1; CountSeries[NumSeries]:=a[i]; end; end; if LengthSeries[NumSeries]>LengthSeries[MaxLengthSeries] then MaxLengthSeries:=NumSeries; i2:=LengthSeries[MaxLengthSeries]; for i:=1 to NumSeries do if LengthSeries[i] = i2 then LengthSeries[i]:=LengthSeries[i]+1; i3:=0; for i:=1 to NumSeries do for i2:=1 to LengthSeries[i] do begin inc(i3); temp[i3]:=CountSeries[i]; end; a:=temp; for i:=1 to i3 do writeln(a[i] ); end. |
Задачи из раздела Array можно посмотреть здесь.
Комментарии: