Задача 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
Для быстрой проверки кода через запуск используйте следующий тип массива:type
ArrOfInt = array[1..100] of integer;
program lesson15_16; type myArr = array[1..9] of integer; function check(a: myArr; k: integer): integer; var b: boolean; i, j, p, q, l: integer; begin for l := k to high(a) do // увеличение [p,q] на 1 begin p := 1; while p <= high(a) - l do // сдвик [p,q] на 1 begin q := p + l; for i := 0 to k do // числа 0 до k begin b := false; for j := p to q do // поиск числа из k в [p,q] if i = a[j] then begin b := true; break; end; if not b then begin p := p + 1; break; end; end; if b then begin result := l + 1; exit; end end; end; result := 0; end; var arr: myArr; k, i: integer; begin k := 3; randomize(); for i := low(arr) to high(arr) do arr[i] := random(3); for i := low(arr) to high(arr) do write(arr[i], '|'); writeln(); for i := 0 to k - 1 do write(i, '|'); writeln(); writeln(check(arr, k - 1)); readln(); end.
- Log in to post comments
- 2355 reads
vedro-compota
Sun, 08/22/2021 - 12:15
Permalink
Функция проверки конкретного
-- должна быть
_____________
матфак вгу и остальная классика =)
Aleksandr
Tue, 08/24/2021 - 20:18
Permalink
решение
vedro-compota
Tue, 08/24/2021 - 20:56
Permalink
function check(a: myArr; k, q
переделать без ссылки
_____________
матфак вгу и остальная классика =)
Aleksandr
Sun, 08/29/2021 - 12:33
Permalink
решение
vedro-compota
Sun, 08/29/2021 - 12:38
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)