Задача 16 Урок 15
Primary tabs
Дан массив длиной N (не более 100 элементов), состоящий из случайно выбранных чисел из диапазона от 0 до k, где 0≤k
Найдите в этом массиве длину самого короткого фрагмента, который содержит все числа от от 0 до k.
Например:Для N = 6, k=2:
20221длина=41
Для N = 10, k=2:
2022110012длина=3
Для N = 15, k=3:
20223300230321длина=40
Для N = 7, k=2:
010002длина=50
program U15Z16;
type mas=array[1..100] of integer;
var a:mas;
n,k,i,j,kol,u,d,df:integer;
begin
writeln('vvedite N');
readln(n);
writeln('vvedite k');
readln(k);
d:=1;
df:=n+1;
kol:=0;
randomize();
for i:=1 to n do
begin
a[i]:=random(k+1);
write(a[i],' ');
end;
writeln();
for i:=1 to n-k do
begin
for j:=0 to k do
begin
for u:=i to n do
begin
if (a[u]=j) then
begin
if (d<(u-i+1)) then
d:= u-i+1;
kol:=kol+1;
break;
end;
end;
end;
if (kol=(k+1)) then
begin
if (d=(k+1)) then
begin
df:=d;
break;
end
else
if d<df then
df:=d;
end;
if (df=k+1) then
break;
d:=1;
kol:=0;
end;
if (df=(n+1)) then
writeln('massiv ne soderzhit vse chisla ot 0 do ',k)
else
writeln('min dlinna = ', df);
readln();
end.- Log in to post comments
- 1122 reads