Задание 16 урок 15
Primary tabs
Дан массив длиной N (не более 100 элементов), состоящий из случайно выбранных чисел из диапазона от 0 до k, где 0≤k
Найдите в этом массиве длину самого короткого фрагмента, который содержит все числа от от 0 до k.
program U15z_16; const N = 40; type MyArr = array[1..N] of integer; function findCh(a: MyArr; c,l, r: integer): boolean; var i, j: integer; begin for i := 0 to c do begin result := false; for j := l to r do if i = a[j] then begin result := true; break; end; if not result then break; end; end; //основная программа var a: MyArr; j,i, k, Left, Right, D: integer; min,max: integer; begin writeln('chislo ot usera ot 2 do 4:'); readln(k); D := 0; //начальное значение длины отрезка min := 0; max:= k; randomize(); writeln('Massiv: '); for j := low(a) to high(a) do a[j] := min + random(max - min + 1); for j := 1 to N do write(a[j],' '); for i := k+1 to N do //счетчик длинны искомого отрезка begin for Left := 1 to N - i do //левый край отрезка ; begin Right := Left + i-1; // правый край отрезка if findCh(a, k,Left, Right) then begin // если отрезок содержит все эл-ты writeln('samaya korotkay dlina ot 0 do k = ',i); D := i; //все числа нашлись в первом отрезке break; end; end; if D > 0 then //если все числа нашлись в первом отрезке break; end; if not findCh(a, k,Left, Right) then writeln('ne vse chisla ot 0 do k'); readln end.
- Log in to post comments
- 463 reads