Урок 15 (Решенная задача номер 15)
Primary tabs
Урок 15 (Решенная задача номер 15)
Дан массив длиной N (не более 100 элементов), состоящий из случайно выбранных чисел из диапазона от 0 до k, где 0≤k
Найдите в этом массиве длину самого короткого фрагмента, который содержит все числа от от 0 до k.
type ArrOfInt = array[1..100] of integer; var N, k, m, p, i, o : integer; massiv : ArrOfInt; function PoiskMinimalDlini(x : ArrOfInt; k, LevayGran, PravayGran : integer): integer; var g, l, d : integer; Flag : boolean; begin result := 0; Flag := false; d := - 1; for l := 0 to k do for g := LevayGran to PravayGran do if (x[g] = l) then begin Inc(d); break; end; Flag := d = k; g := 0; if (Flag = True) then for g := LevayGran to PravayGran do Inc(result); end; begin N := 10; k := 2; m := 0; p := k; o := 2; massiv[1] := 1; massiv[2] := 1; massiv[3] := 2; massiv[4] := 2; massiv[5] := 1; massiv[6] := 1; massiv[7] := 1; massiv[8] := 0; massiv[9] := 1; massiv[10] := 2; for i := 1 to N do write(massiv[i], ' '); while ((PoiskMinimalDlini(massiv, k, m, p) = 0)) do begin Inc(m); Inc(p); PoiskMinimalDlini(massiv, k, m, p); if (p = N) then begin m := 1; p := k + o; Inc(o); end; end; writeln('Minimalnay dlina ravna ', PoiskMinimalDlini(massiv, k, m, p)); end.
- Log in to post comments
- 3817 reads
math2
Wed, 10/21/2020 - 21:29
Permalink
Неправильно работает. Выводит
Неправильно работает. Выводит
Отрезок содержит все целые числа от 0 до 2:
Здесь минимальная длина равна 3.
Не обрабатывается ситуация, когда не все цифры от 0 до k содержатся в массиве.
Romakip
Thu, 10/22/2020 - 15:57
Permalink
Исправлено
math2
Thu, 10/22/2020 - 16:25
Permalink
Не обрабатывается ситуация,
Не обрабатывается ситуация, когда в массиве не все целые числа от 0 до k.
Результат:
1 1 1 1 1 1 1 1 1 1 Minimalnay dlina ravna 105
Romakip
Thu, 10/22/2020 - 16:47
Permalink
Переделано
math2
Thu, 10/22/2020 - 17:10
Permalink
type
Выводит
Здесь минимальная длина равна 9.
Romakip
Thu, 10/22/2020 - 17:16
Permalink
type
Romakip
Fri, 10/23/2020 - 13:41
Permalink
Улучшено