Вход


Главная страница >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Поиск >> Номер 2

[Назад]    [Содержание ]    [Вперед]

  


Номер 2


  Условие: Номер 2


Задача 2. Задан массив чисел А[1:N,1:M],упорядоченный по возрастанию по строкам и столбцам, т.е.: А[I,1]<А[I,2]<...<А[I,M] (при всех I), А[1,J]<A[2,J]<...<А[N,J] (при всех J). Найти элемент массива, равный заданному числу Х и отпечатать его индексы (I,J). Напечатать слово "НЕТ", если такого элемента не окажется. Х можно сравнить не более, чем с M+N элементами массива.

  Решение задачи: Номер 2


Решение задачи 2. Простейшим решением является просмотр элементов массива до нахождения требуемого элемента или установления факта, что такого элемента нет. Очевидно, что в последнем случае необходим просмотр всех элементов массива. Однако возможно существенно сократить количество операций, используя следующий факт. Рассмотрим элемент A[1,m]. Возможны следующие ситуации: 1. X = A[1,m]. В этом случае заданный элемент найден. 2. X < A[1,m]. В этом случае легко заметить, что элемента, равного X, в столбце с номером M быть не может. Поэтому можно ограничится по иском заданного элемента в подматрице без M-того столбца. 3. X > A[1,m]. В этом случае легко заметить, что элемента, равного X, в строке с номером 1 быть не может. Поэтому можно ограничится по иском заданного элемента в подматрице без 1-той строки. Таким образом, сравнивая на каждом шаге значение заданного элемента X со значением элемента, расположенного в правом верхнем углу интересующей нас подматрицы, суммарное число строк и столбцов интересующей нас подматрицы уменьшается на 1. Поэтому трудоемкость такого поиска не превосходит N+M.

Назад



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017