Урок 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
- 130 reads