Задача 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
- 859 reads