ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 76259
Условие(Из книги Д. Гриса) Имеется массив x: array [1..n] of array [1..m] of integer, упорядоченный по строкам и по столбцам:x[i][j]≤x[i][j+1], x[i][j]≤x[i+1][j], и число a. Требуется выяснить, встречается ли a среди x[i][j]. РешениеПредставляя себе массив x как матрицу (прямоугольник, заполненный числами), мы выберем прямоугольник, в котором только и может содержаться a, и будем его сужать. Прямоугольник этот будет содержать x[i][j] при 1≤i≤l и k≤j≤ml:=n; k:=1; {l>=0, k<=m+1, если a есть, то в описанном прямоугольнике} while (l > 0) and (k < m+1) and (x[l][k] <> a) do begin | if x[l][k] < a then begin | | k := k + 1; {левый столбец не содержит a, удаляем его} | end else begin {x[l][k] > a} | | l := l - 1; {нижняя строка не содержит a, удаляем её} | end; end; {x[l][k] = a или прямоугольник пуст } answer:= (l > 0) and (k < m+1) ; Замечание. Здесь та же ошибка: x[l][k] может оказаться
неопределённым.
(Её исправление предоставляется читателю.)
Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|