| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Бинарный поиск по диагоналям матрицы. |
| Автор: Avaj 28.9.2008, 13:44 | ||||||
| Вобщем нужно реализовать бинарный поиск квадратной матрице А[n][n] по диагоналям, параллельным побочной (т.е. диагоналями здесь будут эл-ты A[0][0], A[n-1][n-1], побочная диагональ и все параллельные ей) Алгоритм поиска вот такой:
по-подробней он описан http://forum.vingrad.ru/forum/topic-37776.html#st_15_view_0. С другим алгоритмом бинарного поиска я уже разобрался и реализовал, А вот с приведённым выше - нифига не получается Короче ближе к делу - Я ни как немогу найти у себя в коде ошибку из-за которой поиск не работает! Вот ф-ция, которая работает(упрощённый алгоритм бинарного поиска):
Пояснение: Этой ф-ции передаётся двумерный массив n*n(ну или квадратная матрица), в котором(-ой) и нужно произвести поиск заданного элемента(x) по диагоналям, параллельным побочной - диагонали пронумерованы начиная с эл-та A[0][0] - диагональ №0 и заканчивая элементом A[n-1][n-1] - диагональ №2n-2. Т.е. как вы поняли, сама побочная диагональ будет иметь номер n-1. Диагонали отсортированы по неубыванию слева на право. Затем производится сам поиск и результаты поиска заносятся в одномерный массив b, т.е если в i-ой диагонали эл-т найден, то его позиция в диагонали заносится в b[i]. Ну а n2 - ненужный пока параметр. Так вот, как я уже говорил, эта функция работает, и суть вопроса в том почему не работает эта функция:
Как видите, это тоже бинарный поиск, но немного модифицированный. Кто скажет, где ошибка? P.S. не обращайте внимание на то, что ф-ции ищут только в первых n-диагоналях, потом доделаю. Я сам всё понял |