Во всех клетках матрицы кроме граничных единицы или нули.
В граничных (левый/правый столбцы, верхняя/нижняя строки) — только нули.
Нужно заменить значение каждой единичной клетки
на расстояние от неё до ближайшей нулевой клетки.
А>Нужно заменить значение каждой единичной клетки А>на расстояние от неё до ближайшей нулевой клетки.
уточни, как считаются диагональные расстояния?
Re[2]: Преобразовать матрицу.
От:
Аноним
Дата:
13.06.10 09:57
Оценка:
Здравствуйте, dilmah, Вы писали:
А>>Нужно заменить значение каждой единичной клетки А>>на расстояние от неё до ближайшей нулевой клетки.
D>уточни, как считаются диагональные расстояния?
По теореме Пифагора.
Re[2]: Преобразовать матрицу.
От:
Аноним
Дата:
13.06.10 10:10
Оценка:
Здравствуйте, dilmah, Вы писали:
А>>Нужно заменить значение каждой единичной клетки А>>на расстояние от неё до ближайшей нулевой клетки.
D>уточни, как считаются диагональные расстояния?
Если есть идеи, когда расстояние вычисляется
не по теореме Пифагора , а как min(dx,dy),
тоже интересно.
Re[3]: Преобразовать матрицу.
От:
Аноним
Дата:
13.06.10 10:15
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, dilmah, Вы писали:
А>>>Нужно заменить значение каждой единичной клетки А>>>на расстояние от неё до ближайшей нулевой клетки.
D>>уточни, как считаются диагональные расстояния?
А>Если есть идеи, когда расстояние вычисляется А>не по теореме Пифагора , а как min(dx,dy), А>тоже интересно.
Не min — max(dx,dy)
А>>Если есть идеи, когда расстояние вычисляется А>>не по теореме Пифагора , а как min(dx,dy), А>>тоже интересно. А>Не min — max(dx,dy)
действительно, в такой постановке должно быть проще.
Понятно, что нужно ввести примитивную операцию -- для каждой ненулевой клетки нужно посчитать минимум значений соседей, прибавить единицу и положить в эту клетку.
Вопрос, в том сколько проходов применения этой операции и в каких направлениях нужно сделать, чтобы значения устаканились к правильному ответу.
Должно быть достаточно 4 проходов:
столбец за столбцом слева направо,
столбец за столбцом справа налево,
строка за строкой сверху вниз
строка за строкой снизу вверх.
Интересно, можно ли обойтись меньшим числом проходов?
Здравствуйте, <Аноним>, Вы писали:
А>Во всех клетках матрицы кроме граничных единицы или нули. А>В граничных (левый/правый столбцы, верхняя/нижняя строки) — только нули. А>Нужно заменить значение каждой единичной клетки А>на расстояние от неё до ближайшей нулевой клетки.