Получать точки многоугольников, которые формируются в массиве nxm в C

У меня есть массив nxm, где каждая ячейка должна быть размеров A * В. Данные о массиве наполняют одними (1) и нули (0), пример:

[ 1, 1, 1, 1, 1]
[ 0, 1, 1, 0, 1]
[ 0, 1, 0, 0, 1]
[ 0, 1, 1, 1, 1]
[ 0, 1, 0, 0, 1]
[ 0, 1, 1, 1, 1]
[ 0, 0, 0, 0, 0]
[ 1, 1, 1, 1, 1]
[ 1, 1, 0, 0, 1]
[ 1, 1, 1, 1, 1]

Имея структуры:

typedef struct Punto{
     int x, int y;
} Punto;

typedef struct Poligono{
     Puntos vertices;
     int    total;
} Poligono;

Я хочу достичь двух таких функций, которые:

int totalPoligonos = 0, totalHuecos = 0; 
Poligono *poligonos = buscarPoligonos(matriz, &totalPoligonos);
Poligono *HuecosPoligonos = buscarPoligonos(matriz, &totalHuecos);

Точки должны быть вычисленными на основании постоянной величины A.

Они совсем не существуют из диагоналей, только нерегулярные многоугольники с прямоугольными формами XD, которые разграничены ячейками со стоимостью 1.

Проблема в себе, он состоит в том, чтобы знать, как пробегать периметр. Он думал о том, чтобы иметь соединенный список, чтобы видеть, что я пробежал будки, но остаюсь коротким в момент, в котором будка со стоимостью один является окруженным одним, более или менее это алгоритм, который я стремлюсь к тому, чтобы осуществить, но остался коротким идей.

3
задан 11.01.2017, 07:25
0 ответов

Как я показал в комментарии, прием состоит в том, чтобы искать 0. Это упражнение возврата.

Каждые 0 раздели массив на 8 субмассивов.

11111111   1111 111              1
11111111   1111 111              1
    0      11110111   11110111   0
11111111   1111 111              1
11111111   1111 111              1

Это были бы самые большие regtángulos, которые могли бы существовать, если у них нет, в свою очередь, 0 учеников закрытого учебного заведения.

Ты можешь делать функцию, которая называлась бы recursivamente, и которая возвращает эти 8 субмассивов для каждого массива, перемещенного за аргумент.

2
ответ дан 03.12.2019, 17:45
  • 1
    Быстрый cosita. После tendrí эксперт, что складывать вытекающие прямоугольники, ища самого большего возможного. –  11.01.2017, 07:54
  • 2
    Спасибо, понятный в 100 %. –  11.01.2017, 08:02