Отримання знань

дистанційна підтримка освіти школярів


Тут ви можете виконати завдання чи задати питання по змiсту цього уроку.

Михальов Володимир (StarRover) 2013-09-27 15:40:44
------------------------------------
Задача про найдовшу послідовність

Ціла таблиця A[1:n] містить лише нулі та одиниці. Виявити найдовшу послідовність нулів, що йдуть підряд. (k -- номер 1-го елементу послідовності, l -- довжина послідовності.)

------------------------------------

{Military0}
const
max=10000;
var
a:array[1..max] of longint;
n,l,lt,k,t:longint;
begin
Readln(n);
for t:= 1 to n do Read(a[t]);
k:=0;
l:=0;
lt:=0;
for t:=1 to n do
if a[t]=0 then begin
lt:=lt+1;
if lt>l then begin
l:=lt;
k:=t-l+1;
end
end
else lt:=0;
WriteLn('k=',k,' l=',l);
end.
Михальов Володимир (StarRover) 2013-09-27 16:27:02
-----------------------------------------------------
1. Таблиця В[1:n] містить лише нулі та одиниці. Знайти найдовшу послідовність однакових елементів, що стоять підряд.
-----------------------------------------------------
{Military1}
const
max=10000;
var
b:array[1..max] of longint;
n,l,lt,k,t,f:longint;
begin
Readln(n);
for t:= 1 to n do Read(b[t]);
k:=0;
l:=1;
lt:=1;
for t:=2 to n do
if b[t]=b[t-1] then begin
lt:=lt+1;
if lt>l then begin
l:=lt;
k:=t-l+1;
end
end
else lt:=1;
WriteLn('k=',k,' l=',l);
end.
Михальов Володимир (StarRover) 2013-09-30 16:00:58
2. Таблиця С[1:n] містить лише двійки, п'ятірки і сімки. Знайти найдовшу послідовність однакових елементів, що стоять підряд.

{Military 2}
const
max=10000;
var
c:array[1..max] of longint;
n,l,lt,k,t,f:longint;
begin
Readln(n);
for t:= 1 to n do Read(c[t]);
k:=0;
l:=1;
lt:=1;
for t:=2 to n do
if c[t]=c[t-1] then begin
lt:=lt+1;
if lt>l then begin
l:=lt;
k:=t-l+1;
end
end
else lt:=1;
WriteLn('k=',k,' l=',l);
end.
Михальов Володимир (StarRover) 2013-09-30 16:18:19
3. Таблиця D[1:n] містить лише двійки, п'ятірки і сімки. Знайти найдовшу послідовність недвійок, що стоять підряд.

{Military 3}
const
max=10000;
var
d:array[1..max] of longint;
n,l,lt,k,t,f:longint;
begin
Readln(n);
for t:= 1 to n do Read(d[t]);
k:=0;
if d[1]=2
then begin
l:=0;
d[t]:=0;
end
else begin
l:=1;
d[t]:=1;
end;
for t:=2 to n do
if (d[t]=d[t-1])and(d[t]<>2) then begin
lt:=lt+1;
if lt>l then begin
l:=lt;
k:=t-l+1;
end
end
else lt:=1;
WriteLn('k=',k,' l=',l);
end.
Михальов Володимир (StarRover) 2013-10-01 12:00:22
4. Таблиця F[1:n] містить цілі числа. Знайти найдовшу зростаючу (спадну) послідовність.

{Military 4}
const
max=10000;
var
f:array[1..max] of longint;
n,l,lt,k,t:longint;
begin
Readln(n);
for t:= 1 to n do Read(f[t]);
k:=0;
l:=0;
lt:=0;
if (n>1)and(f[1]<>f[2]) then begin
lt:=1;
k:=1;
end;
for t:=2 to n do
if (f[t]>f[t-1]) then begin
lt:=lt+1;
if lt>l then begin
l:=lt;
k:=t-l+1;
end
end
else lt:=1;
for t:=2 to n do
if (f[t] lt:=lt+1;
if lt>l then begin
l:=lt;
k:=t-l+1;
end
end
else lt:=1;
WriteLn('k=',k,' l=',l);
end.
Михальов Володимир (StarRover) 2013-10-01 12:58:33
5. У цілій таблиці G[1:n] знайти найдовшу зубчасту послідовність. Для перегляду демонстрації натисніть "Початок".

{Military 5}
const
max=10000;
var
f:array[1..max] of longint;
n,l,lt,k,t:longint;
function Zub(a,b,c:longint):boolean;
begin
if (((ac)or(a>b)and(b then Zub:=True
else Zub:=False;
end;
begin
Readln(n);
for t:= 1 to n do Read(f[t]);
k:=0;
l:=0;
lt:=0;
if (n>2)and Zub(f[1],f[2],f[3]) then begin
lt:=2;
k:=2;
end;
for t:=3 to n do
if Zub(f[t-2],f[t-1],f[t])
then begin
lt:=lt+1;
if lt>l then begin
l:=lt;
k:=t-l+1;
end
end
else lt:=2;
WriteLn('k=',k,' l=',l);
end.

Повернутися до уроку

Повернутися до перелiку уроків курсу

В системі: гості - (1); користувачі - (0)