Урок 15 Задача 20
Primary tabs
Дан массив длиной N (не более 100 элементов), состоящий из случайно выбранных чисел из диапазона от 0 до k, где 0≤k
Найдите в этом массиве длину самого короткого фрагмента, который содержит все числа от от 0 до k.
type Arr=array [1..100] of integer;
var i, p,m, k,l,N, min, max:integer;
a: Arr;
function proverka(b: Arr; j,s,f: integer; var nach:integer):boolean;
var k,h:integer;
begin
result:=true;
for k:= 0 to f do
begin
for h:= j to (j+s-1) do
if b[h]=k then
begin
if h=(j+s-1)then
nach:=j;
break;
end;
if b[h]<>k then
begin
result:=false;
break;
end;
end;
end;
begin
N:=20;
randomize();
min:=0;
max:=4;
for i:=low(a) to N do
begin
a[i]:= min+random(max-min+1);
write(a[i],' ');
end;
writeln();
k:=4;
l:=k+1;
i:=1;
if not proverka(a,i,n,k,m) then
write('ne vse chisla vstrechayutsa');
While i<= (n-l) do
begin
if proverka(a,i,l,k,m) then
begin
p:=m+l;
writeln('dlina=',l);
write ('m=',m,' ','p=',p);
break;
end
else if i=(n-l) then
begin
i:=0;
l+=1;
end;
i+=1;
end;
readln();
end. - Log in to post comments
- 427 reads