На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> расстояние между элементами матрицы
    Нужен простой алгоритм для решения задачи:
    В булевой матрице A(n,m) найти минимальное и максимальное расстояние между элементами, равными 1.

    расстояние это (поправьте если это не так):

    Если элементы располагаются в одной строке (столбце), то расстояние это
    A(i,j)-A(i,j+k) = k ( A(i+k,j)-A(i,j) = k ), если элементы располагаются в разных строках (и/или столбцах), то расстояние определяется по правилу треугольника Пифагора:
    k = sqrt((A(i+p,j)-A(i,j))^2+(A(i,j+p)-A(i+p,j))^2)
      Заранее составить матрицу расстояний
      ExpandedWrap disabled
        distance(i, j) = sqrt(i*i + j*j)

      и считать расстояния
      ExpandedWrap disabled
        k = distance(abs(x1-x2), abs(y1-y2))
        Akina, спасибо за идею. Еще и булевой матрицы нет. Пока координаты (x,y) генерируются в натуральных величинах (в метрах), между ними-то и нужно вычислять расстояние.
          Вообще если рассматривать эти координаты как точки на плоскости, то наиболее удаленные точки находятся на выпуклой оболочке. А про поиск наиболее близких точек можно почитать здесь, глава 3-5.
          Сообщение отредактировано: OpenGL -
            OpenGL, спасибо. смотрю.
            Сообщение отредактировано: tomsksmile -
              В C есть такая функция - hypot(x, y) считает длину гипотенузы треугольника с катетами x и y.
              Проще говоря - sqrt(x^2 + y^2). Не вызывает переполнений.
                а дельфийская переполнение вызывает?
                  OpenGL
                  Hypot из модйля math. Нет не вызывает. И еще она там с повышенной точностью, нежели прямой вариант.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0844 ]   [ 15 queries used ]   [ Generated: 10.03.26, 15:19 GMT ]